
    8Sj<                        S SK Jr  S SK Jr  S SK Jr  S SK Jr  S SK Jr  S SKJr  S SKJr  S SKJ	r	  S S	KJ
r
  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr   " S S\5      r\" S\S9rS\\   S\\/\	\   4   S\\\4   4S jrS\\   S\\/\	\   4   S\\\\   4   4S  jr S\\   S\\/\	\   4   S!\\/\	\   4   S"\\\\   /\4   S\\\4   4
S# jr!\ " S$ S%5      5       r"S&\S'\SS(4S) jr#S*\S+\\   S,\\   S-\\\4   S\4
S. jr$S/\S0\\   S\4S1 jr%S*\S\4S2 jr&S3\S4\\   S\4S5 jr'S'\\\4   4S6 jr(g()7    )	dataclass)field)fields)is_dataclass)replace)Any)Callable)Iterable)Optional)Protocol)TypeVar)Union)cast)CallbackFunction)
Dictionary)Enumeration)IDLParameterizedType)IDLType)IDLUnionType)IncludedMixin)	Interface)Module)Typedefc                        \ rS rSr% \\S'   Srg)NamedDefinition   name N)__name__
__module____qualname____firstlineno__str__annotations____static_attributes__r       U/mnt/mint/home/seanl/public/Repos/ladybird/Meta/Generators/libweb_bindings/context.pyr   r      s    
Ir&   r   
Definition)boundmodulesdefinitions_for_modulereturnc                 j    U  VVs0 s H  o!" U5        H  o3R                   U_M     M      snn$ s  snnf Nr   )r*   r+   module
definitions       r'   collect_definitions_by_namer2   &   s3     7>ogFPfgmPn*OOZ'PnOgooos   %/c                     0 nU  H=  nU" U5       H.  nUR                  UR                  / 5      R                  U5        M0     M?     U$ r.   )
setdefaultr   append)r*   r+   partial_definitionsr0   r1   s        r'   #collect_partial_definitions_by_namer7   ,   sJ     8:08J**:??B?FFzR 9  r&   partial_definitions_for_modulemergec                     [        X5      n[        X5      nUR                  5        VVs0 s H  u  pgXc" XuR                  U/ 5      5      _M     snn$ s  snnf r.   )r2   r7   itemsget)r*   r+   r8   r9   definitionsr6   type_r1   s           r'   !merge_partial_definitions_by_namer?   6   sV     .gNK=gfbmbsbsbuvbuM^UE5%<%<UB%GHHbuvvvs   $Ac                      \ rS rSr% \\   \S'   \" SS9r\	\
\4   \S'   \" SS9r\	\
\4   \S'   \" SS9r\	\
\4   \S'   \" SS9r\	\
\4   \S'   \" SS9r\	\
\4   \S	'   \" SS9r\	\
\4   \S
'   S&S jrS&S jrS&S jrS&S jrS&S jrS\S\4S jrS&S jrS rS\S\4S jrS\S\ \   4S jr!S\S\ \   4S jr"S\S\#\
   4S jr$S\S\ \   4S jr%S\S\\   4S jr&S \S\\   4S! jr'S\S\ \   4S" jr(S\S\ \   4S# jr)S\S\4S$ jr*S%r+g)'GenerationContextA   r*   F)initcallback_functionsdictionariesenumerations
interfacestypedefsmixinsr,   Nc                 L   [        U R                  S 5      U l        [        U R                  S 5      U l        [        U R                  S 5      U l        U R                  5         U R                  5         U R                  5         U R                  5         U R                  5         g )Nc                     U R                   $ r.   )rD   r0   s    r'   <lambda>1GenerationContext.__post_init__.<locals>.<lambda>L   s    [a[t[tr&   c                     U R                   $ r.   )rF   rL   s    r'   rM   rN   M   s    U[UhUhr&   c                     U R                   $ r.   )rH   rL   s    r'   rM   rN   N   s    QWQ`Q`r&   )
r2   r*   rD   rF   rH   resolve_dictionariesresolve_mixinsresolve_interfacesresolve_typedefsresolve_modulesselfs    r'   __post_init__GenerationContext.__post_init__K   sy    "=dllLt"u7Fhi3DLLB`a!!#!r&   c                 J    [        U R                  S S [        5      U l        g )Nc                     U R                   $ r.   )rE   rL   s    r'   rM   8GenerationContext.resolve_dictionaries.<locals>.<lambda>Y   s
    6..r&   c                     U R                   $ r.   )partial_dictionariesrL   s    r'   rM   r\   Z   s
    666r&   )r?   r*   merge_dictionaryrE   rV   s    r'   rQ   &GenerationContext.resolve_dictionariesV   s    =LL.6	
r&   c                 J    [        U R                  S S [        5      U l        g )Nc                     U R                   $ r.   )rI   rL   s    r'   rM   2GenerationContext.resolve_mixins.<locals>.<lambda>a   s    6==r&   c                     U R                   $ r.   )partial_mixinsrL   s    r'   rM   rc   b   s
    600r&   )r?   r*   merge_mixinrI   rV   s    r'   rR    GenerationContext.resolve_mixins^   s    7LL(0	
r&   c                    U R                    Vs0 s H2  oR                  c  M  UR                  R                  UR                  _M4     nn[        U R                   S 5      n0 n[	        5       nU R                    Hj  nUR
                   HW  nUR                  UR                  4nXu;   a  M"  UR                  U5        UR                  US   / 5      R                  U5        MY     Ml     UR                  5        VV	s0 s H>  u  pU[        U	UR                  U/ 5      UR                  U/ 5      U R                  5      _M@     sn	nU l        g s  snf s  sn	nf )Nc                     U R                   $ r.   )partial_interfacesrL   s    r'   rM   6GenerationContext.resolve_interfaces.<locals>.<lambda>j   s    ^d^w^wr&   r   )r*   	interfacer   r7   setincluded_mixinsinterface_name
mixin_nameaddr4   r5   r;   merge_interfacer<   rI   rG   )
rW   r0   rG   rj   rn   seen_included_mixinsincluded_mixinkeyr>   rl   s
             r'   rS   $GenerationContext.resolve_interfacesf   sD   BF,,
BNRbRb3F!!6#3#33, 	 
 AOwx:<58UllF"("8"8"11"-- .$((-**3q626==nM #9 #" %/$4$4$6
 %7  ?"&&ub1##E2.	  %7
!
 
s   E	%E	:AEc                 n    U R                    Vs/ s H  oR                  U5      PM     snU l         g s  snf r.   )r*   resolve_module)rW   r0   s     r'   rU   !GenerationContext.resolve_modules   s(    BF,,O,++F3,OOs   2r0   c                 Z   [        UUR                  b#  U R                  UR                  R                     OS UR                   Vs/ s H  o R                  UR                     PM     snUR
                   Vs/ s H  o0R
                  UR                     PM     sn/ / / / S9$ s  snf s  snf )N)rl   rE   rI   rj   r^   re   rn   )r   rl   rG   r   rE   rI   )rW   r0   
dictionarymixins       r'   rx    GenerationContext.resolve_module   s    @F@P@P@\doof&6&6&;&;<bfOUObObcOb++JOO<Obc9?GKK

+G!!#	
 		
 dGs   "B#8"B(c                    U R                   R                  5        VVs0 s H(  u  pU[        X R                  UR                  5      S9_M*     snnU l         U R                  U R                  5      U l        U R                  U R                  5      U l        U R                  U R                  5      U l        U R                  U R                  5      U l	        g s  snnf )N)type)
rH   r;   r   resolve_typedefr   resolve_typedefs_in_mappingrD   rE   rI   rG   )rW   r>   typedefs      r'   rT   "GenerationContext.resolve_typedefs   s    cgcpcpcvcvcx
cxQ_QVE77)=)=gll)KLLcx
 #'"B"B4CZCZ"[ <<T=N=NO66t{{C::4??K
s   /Cc                 v    UR                  5        VVs0 s H  u  p#X R                  U5      _M     snn$ s  snnf r.   )r;   resolve_typedefs_in)rW   r=   r>   r1   s       r'   r   -GenerationContext.resolve_typedefs_in_mapping   s6    U`UfUfUhiUh@Q//
;;Uhiiis   5valuec                 2  ^  [        U[        5      (       a  T R                  U5      $ [        U[        5      (       a"  U Vs/ s H  nT R	                  U5      PM     sn$ [        U[
        5      (       a  [        U 4S jU 5       5      $ [        U5      (       at  [        [        [        U5      40 [        U5       Vs0 s HE  nUR                  (       d  M  UR                  T R	                  [        XR                  5      5      _MG     snD6$ U$ s  snf s  snf )Nc              3   F   >#    U  H  nTR                  U5      v   M     g 7fr.   )r   ).0itemrW   s     r'   	<genexpr>8GenerationContext.resolve_typedefs_in.<locals>.<genexpr>   s     JED11$77Es   !)
isinstancer   r   listr   tupler   r   r   r   r   rC   r   getattr)rW   r   r   r   s   `   r'   r   %GenerationContext.resolve_typedefs_in   s    eW%%''..eT""?DEutD,,T2uEEeU##JEJJJS%  "(!.zz UEJJ 8 8

9S TT!.   Fs   D<D3Dr>   c                 L    U R                   R                  UR                  5      $ r.   )rD   r<   r   rW   r>   s     r'   callback_function#GenerationContext.callback_function   s    &&**5::66r&   c                 L    U R                   R                  UR                  5      $ r.   )rE   r<   r   r   s     r'   r{   GenerationContext.dictionary         $$UZZ00r&   typesc                     U VVs1 s H;  nUR                  5         H#  nU R                  U5      c  M  UR                  iM%     M=     snn$ s  snnf r.   )nested_typesr{   r   )rW   r   r>   nested_types       r'   dictionary_type_names'GenerationContext.dictionary_type_names   sS     
$113{+ K3 
 	
 
s
   *AAr{   c                     UR                   (       d  g U R                  R                  UR                   5      nUc&  [        SUR                   SUR                    S35      eU$ )NzDictionary 'z$' inherits from unknown dictionary '')parent_namerE   r<   RuntimeErrorr   )rW   r{   parent_dictionarys      r'   dictionary_parent#GenerationContext.dictionary_parent   sg    %% --11*2H2HI$z//ST^TjTjSkklm  ! r&   c                     U/nUS   R                   (       aA  U R                  US   5      nUc   U$ UR                  U5        US   R                   (       a  MA  U$ N)r   r   r5   )rW   r{   stackparents       r'   dictionary_inheritance_stack.GenerationContext.dictionary_inheritance_stack   s`    Bi##++E"I6F~  LL 	 Bi### r&   rl   c                     U/nUS   R                   (       aU  U R                  R                  US   R                   5      nUc   U$ UR                  U5        US   R                   (       a  MU  U$ r   )r   rG   r<   r5   )rW   rl   r   r   s       r'   inheritance_stack#GenerationContext.inheritance_stack   sn     
 Bi##__((r)>)>?F~  LL 	 Bi### r&   c                 L    U R                   R                  UR                  5      $ r.   )rF   r<   r   r   s     r'   enumerationGenerationContext.enumeration   r   r&   c                 L    U R                   R                  UR                  5      $ r.   )rG   r<   r   r   s     r'   rl   GenerationContext.interface   s    ""5::..r&   c           	         Un[        U[        5      (       aJ  [        UR                   Vs/ s H  o0R                  U5      PM     snUR                  UR
                  5      $ [        U[        5      (       aU  [        UR                  UR                   Vs/ s H  o@R                  U5      PM     snUR                  UR
                  5      $ [        5       nUR                  U R                  ;   Gav  UR                  5       nXe;   a  [        SUR                   S35      eUR                  U5        U R                  UR                     R                  nUR                  UR                  =(       d    UR                  5      n[        U[        5      (       aJ  [        UR                   Vs/ s H  o0R                  U5      PM     snUR                  UR
                  5      $ [        U[        5      (       aU  [        UR                  UR                   Vs/ s H  o@R                  U5      PM     snUR                  UR
                  5      $ UR                  U R                  ;   a  GMv  U$ s  snf s  snf s  snf s  snf )Nz	Typedef 'z' resolves recursively)r   r   member_typesr   nullableextended_attributesr   r   
parametersrm   rH   without_nullabler   rq   r   clone_with_nullable)rW   r>   resolved_typemember_type	parameter
seen_typesresolved_type_without_nullabletypedef_types           r'   r   !GenerationContext.resolve_typedef   s%   m\22FSF`F`aF`{%%k2F`a&&11  m%9::'""BOBZBZ[BZY%%i0BZ[&&11	  $'5
  DMM1-:-K-K-M*-;"Y}/A/A.BBX#YZZNN9:==););<AAL(<<]=S=S=lWcWlWlmM-66#JWJdJdeJd;))+6Jde!**!55  -)=>>+!&&FSF^F^_F^)))4F^_!**!55	 #   DMM10 M b \" f `s   I)I.
)I3I8
)rD   rE   rF   rG   rI   r*   rH   )r,   N),r   r    r!   r"   r   r   r$   r   rD   dictr#   r   rE   r   rF   r   rG   r   rH   r   rI   rX   rQ   rR   rS   rU   rx   rT   r   r   r   r   r   r   r{   rm   r   r   r   r   r   rl   r   r%   r   r&   r'   rA   rA   A   s   &\6;6GS"223G*/U*;L$sJ';+0e+<L$sK'(<',%'8JS)^$8#(e#4Hd3< 4#(e#4FDi 4	


6P

V 

 

Lj  ,7w 78<L3M 71 1HZ,@ 1
G 
C 

!J 
!8J;O 
!	z 	d:FV 	9 i "1 1Xk-B 1/w /8I+> /+W + +r&   rA   targetsourceNc                    U R                   R                  UR                   5        [        XR                  5      nU R                  R                  U5        U R                  R                  [        XR                  5      5        U R
                  R                  [        XR
                  5      5        U R                  R                  [        XR                  5      5        U R                  R                  [        XR                  5      5        U R                  c  UR                  b  UR                  R                  c  UR                  U l        OWUR                  R                  UR                  R                  5      n[        UR                  X#   R                  X#   S9U l        U R                  =(       d    UR                  U l        U R                  =(       d    UR                  U l        U R                  =(       d    UR                  U l        U R                   =(       d    UR                   U l        U R"                  =(       d    UR"                  U l        U R$                  =(       d    UR$                  U l        U R&                  =(       d    UR&                  U l        U R(                  =(       d    UR(                  U l        g )N)r   	attribute)	constantsextend$merge_definition_extended_attributesregular_attributesstatic_attributesregular_operationsstatic_operationsconstructorsstringifierr   indexr   r   named_property_getterindexed_property_getternamed_property_setternamed_property_deleterindexed_property_settermaplikesetlikeiterable)r   r   r   attribute_indexs       r'   merge_interface_membersr     s   
F,,-=fF_F_`
$$%78
##$HQiQi$jk
$$%I&RkRk%lm
##$HQiQi$jk
CFL_L_`a!f&8&8&D''/!'!3!3F$77==f>P>P>Z>Z[O!(""$6$G$[$[,="F
 $*#?#?#_6C_C_F %+%C%C%evGeGeF"#)#?#?#_6C_C_F $*$A$A$bVEbEbF!%+%C%C%evGeGeF"^^5v~~FN^^5v~~FNoo8FOr&   rl   rj   rn   rI   c                 <   U(       d	  U(       d  U $ [        U 5      nU H/  nUR                  R                  S5      S:X  a  M$  [        XE5        M1     U HE  nUR                  UR                  5      nUc  [        SUR                   S35      e[        XG5        MG     U$ )NExposedNobodyzIncluded mixin 'z' does not exist)copy_interfacer   r<   r   rp   r   )rl   rj   rn   rI   merged_interfacepartial_interfacert   r|   s           r'   rr   rr   9  s     o%i0/0044Y?8K 0D 0
 *

>445=!1.2K2K1LL\]^^ 08	 *
 r&   r|   re   c                     U(       d  U $ [        U 5      nU H/  nUR                  R                  S5      S:X  a  M$  [        X#5        M1     U$ )Nr   r   )r   r   r<   r   )r|   re   merged_mixinpartial_mixins       r'   rf   rf   P  sJ    !%(L',,00;xG< ( r&   c                    [        U [        U R                  5      [        U R                  5      [        U R                  5      [        U R
                  5      [        U R                  5      [        U R                  5      S9$ )N)r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )rl   s    r'   r   r   \  sf    y**+	 < <=y::;	 < <=y::;)001 r&   r{   r^   c                    U(       d  U $ [        U [        U R                  5      [        U R                  5      S9nU HK  nUR                  R                  [        X3R                  5      5        UR                  R                  S S9  MM     U$ )N)membersr   c                     U R                   $ r.   r/   )members    r'   rM   "merge_dictionary.<locals>.<lambda>u  s    &++r&   )ru   )r   r   r   r   r   r   r   sort)r{   r^   merged_dictionarypartial_dictionarys       r'   r_   r_   h  s    Z''( !?!?@
 3!!((01CE_E_`	
 	!!&&+E&F	 3
 r&   c                     U R                   (       d  U$ U Vs/ s H%  n[        U0 U R                   EUR                   ES9PM'     sn$ s  snf )N)r   )r   r   )r   r   r   s      r'   r   r   y  sU    %% F 	,hv/I/I,hVMgMg,hi  s   ,A))dataclassesr   r   r   r   r   typingr   r	   r
   r   r   r   r   r   Utils.webidl_parserr   r   r   r   r   r   r   r   r   r   r   r(   r   r   r#   r2   r7   r?   rA   r   rr   rf   r   r_   r   r   r&   r'   <module>r      sE  
 "   $          0 * + 4 ' , - ) & 'h  \9
p&\p3;VHhzFZ<Z3[p	#z/p&\3;VHhzFZ<Z3[	#tJ
 w&\w$fXx
/C%CDw %-fXx
7K-K$Lw Zj!12J>?	w
 
#z/w X X Xv9I 9y 9T 98Y -( i 	
 .	y 	$y/ 	i 		i 	I 	 4
CS Xb "y*7L1M r&   