
    ?e?V                        d dl mZ ddlmZmZ ddl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mZmZmZ d Zd	 Zd
 Zd"dZd#dZd#dZd Zd$dZd%dZ	 d#dZd Z d Z!d&dZ"d'dZ#d Z$d(dZ%d Z&d)dZ'dZ(d  Z)d! Z*dS )*   )SIP_VERSION_STR   )is_number_slotreflected_slot)AccessSpecifierArgumentTypeArrayArgumentEnumBaseTypeIfaceFileTypePyQtMethodSpecifierPySlot	Signature)append_iface_filefind_method   )ArgumentFormatterClassFormatterformat_copyingformat_scoped_py_namec                 P   t          |d          5 }| j        }|j        rdt           dnd}t	          |j        d          }|                    d|j         d| |            | j        rt          || |           nt          || |           ddd           dS # 1 swxY w Y   dS )	z Output a .pyi file. wz#
# Generated by SIP 
 #z+# The PEP 484 type hints stub file for the z	 module.
N)openmoduleversion_infor   r   copyingwritepy_nameis_composite_composite_module_module)specprojectpyi_filenamepfr   version_info_s	copying_ss          >lib/python3.11/site-packages/sipbuild/generator/outputs/pyi.py
output_pyir+   #   s"    
lC	 	  &B JQI]eE/EEEEce"6>377	
   	  	  	   	&b$////Bf%%%& & & & & & & & & & & & & & & & & &s   A=BB"Bc                     |j         j        D ]3}|j        |j         u r#|                     d|j        j         d           4dS )z/ Output the type hints for a composite module. from z
 import *
N)r   all_imports	compositer   
fq_py_namename)r'   r$   r   mods       r*   r"   r"   8   sU     {& ? ?=DK''HH=S^0===>>>? ?    c           
         d}|j         dk    r@|j        D ]8}|j        |j        u r(t          | |          }|                     d            n9|j        r/t          | |          }|                     d|j         d           g }|j        D ]}|j        j        	                    d          }|j        j        |j
        k    r|                    d|j
        z              T|j        j        d	t          |j
                   d
z
           }|                    d|z   dz   |j
        z              |r=t          | |d
          }|                     d                    |          dz              t          | |j        |          }t          | |j        |          }t#          | ||           g }	|j        D ]D}
|
j        j        |ur|
j        r|
j        r!|
j        )|
j        1t1          | |||
|	           E|j        D ]+}|j        j        |ur|j
        t5          | ||||	           ,t7          | |||	           d}|j        D ]4}|j        +t          | |          }t=          | ||||j        d|	           5d	S )z/ Output the type hints for an ordinary module. T       )firstzimport enum
zimport typing

import r   .zimport Nr   r-   z import )r8   minimumF) abi_versionenumsr   	_separater   
sip_moduler.   r0   r1   splitr    appendlenjoin_type_hint_codeexported_type_hint_codetype_hint_code_enumsclasses
iface_fileexternalno_type_hintscope
real_class_classmapped_types_mapped_type
_variablesglobal_functionspy_slot	_callable	overloads)r'   r$   r   r8   enumimportsr2   partsrK   definedklassmapped_typemembers                r*   r#   r#   @   s    E 7""J 	 	D{dk))!"E222))) *
  "E***
  	 	 	 G! G G#))#..>#+--NN9s{23333N'(>#ck*:*:):Q)>(>?ENN7U?Z7#+EFFFF ,"E1555
7##d*+++ B <eDDEB 5u==E 2tV
 G 1 1"&00> 	 	 ;" 'r40000( A A!(66*T6;@@@r4)))E)  >!b...Eb$0@%   r3   Tr7   c                     d}|D ]P}|dk    rt          | ||d          }n|dz  }d}|j        D ]%}|r|t          |          z  }d}||z  }|dk    rd}&Q|                     |           |S )z$ Output handwritten type hint code. r   r   )r8   indentr:   r   TF)r=   text_indentr   )r'   rE   r8   r]   sblockneed_indentchs           r*   rC   rC      s     	A # #77bfaHHHEEIA* 	# 	#B $WV__$#GATzz"	# HHQKKKLr3   c                 h   d}|j         st          | |           t          |          }|d|j        j         dz  }|j        r,|d                    fd|j        D                       z  }n|j        gj        d         dk    rFj	        r?|j        j        
                    d	          r |j	        |j        j        d
d         z   z  }nC||j        j        z  }n3|j        j        t          j        u rdnd}|t                     | dz  }|j        D ]#}	|	j        t$          j        u r|	j        r|dz  }$|j        du o|dk    }
|
r(|j        D ] }|j        t$          j        u r|j        rd}
 |
rj        D ]}|j        |u r|j        sd}
 n|
rj        D ]}|j        |u r|j        sd}
 n|
rj        D ]}|j        |u r|j        sd}
 n|
rdnd}|d| dz  }|                     |           |dz  }|j        t9          | |j        g|           t;          | ||           j        D ]&}|j        |u r|j        st=          | ||           't?          | ||           d}|j        D ]I}	|	j        t$          j        u r|	j        rt          | ||          }tA          | |	|dk    |           Jd}|j!        D ]5}t          | ||          }tE          | ||j        |j          |           6|j#        D ]}t          | ||          }tI          ||j%                  }|VtM          | |d||j        |	  	         |j'        3tI          ||j'                  }|tM          | |d||j        |	  	         |j         stQ          |j                   dS dS )z$ Output the type hints for a class. r7   r]   class (, c                 X    g | ]&}t          |                                        'S  )r   as_type_hint).0scrX   r   r$   s     r*   
<listcomp>z_class.<locals>.<listcomp>   sC     : : : " $D"--::67KK : : :r3   N   zsip.   simpler   wrapperr   F ...):r   rX   rK   r]   )rK   r]   Tr8   r]   ))is_hidden_namespacer=   r_   r    r1   superclassesrB   	supertyper;   r>   
startswithrH   typer   	NAMESPACE_sip_module_namectorsaccess_specifierr   PRIVATErJ   rE   rT   r<   rK   rG   	variablesr   rC   rF   rM   rP   _ctormembersrS   
propertiesr   getter	_propertysetterr   )r'   r$   r   rY   rX   r]   nr_overloadsr`   rq   ctorno_bodyoverloadrU   nestedvariablesuffixr8   r[   propr   r   s    `` `                r*   rM   rM      s'    L$ KG"V$$$$FOO	+em(++++ 	<: : : : : :&+&8: : :; ; ;AA _( "b((T_(AUA`A`agAhAh(T_u';ABB'???U_)) "'!1!6-:Q!Q!QXXWYF$T**;F;;;;A K 	 	D$(???  ALL'4/ELA4E 		!O  ,0GGG(  	
  :&&t/@&#GE 	,  <5((1D(#GE 	 N  >U**83H*#GE"*	_&___
!+B!5 6vFFFF
2tVWE&IIII , > ><5  )< 2tVVWf===r4fEEEEE 	I 	I O$;;; 	"E&999b$lQ&6HHHHE- @ @"E&999"dFFEO--w	@ 	@ 	@ 	@   > >"E&999UDK00b$eVU_V% % % {&$UDK88%b$dF!OWf> > > $ 5 	'5#3444445 5r3   c                    t          |j                  dk    }|r#|j        D ]}|j        |u r|j        s	t
          } n|st          |            |                     d|j        j	         dt          |           d           t          | |||||           d}|j        D ]/}	t          | ||          }t          | |||	|	j        d||           0t          ||j                   dS )	z* Output the type hints for a mapped type. r7   rf   rg   z
wrapper):
ru   Trv   N)rA   r   r<   rK   rJ   FALSEr=   r   r    r1   r}   rF   rS   rT   r   rH   )
r'   r$   r   rZ   rX   r]   r   rU   r8   r[   s
             r*   rO   rO   7  s1    ;&''1,G J 	 	Dz[((1B( %"
X+-2XX5Ed5K5KXXXYYYr4	 	 	 	 !) 	% 	%Fbf===Eb$0@$V% % % %
 g{566666r3   c                 ~   |r)t          |          }|dz  }|                     |           t          |          }|dz  }dg}t          |j        j                  D ]0\  }	}
t          |||
||	          }|r|                    |           1|d                    |          dz   z  }|                     |           dS )z Output a ctor type hint. @typing.overload
zdef __init__(selfarg_nrrh   z) -> None: ...
N)r_   r   	enumeratepy_signatureargs	_argumentr@   rB   )r'   r$   r   r   
overloadedrX   r]   r`   r   r   argas_strs               r*   r   r   V  s      FOO	!!
AA8D !2!788    4gfEEE 	 KK4-	--AHHQKKKKKr3   Nc           	         |j         D ]x}|j        |ur|j        |ur|j        rt	          | |           |j        t          |j        |j        j                  }d}|j        dk    rc|j	        t          j        u rd}nM|j	        t          j        u rd}n7|j	        t          j        t          j        fv rd}n|j	        t          j        u rd}|j        D ]}	|	j        sd	}
 nd
}
t#          |          }|d|j        j         d| d|
 dz  }|                     |           |dz  }nd}|j        D ]B}	|	j        s9t#          |          }||	j        j         d| dz  }|                     |           C|j        |dz  }zdS )z5 Output the type hints for all the enums in a scope. re   Nintr5   z	enum.Enumz	enum.Flagzenum.IntEnumzenum.IntFlagr   rs   rf   rg   rt   r   r    = ... # type: )r<   r   rK   rJ   r=   r    r   r1   r;   	base_typer
   ENUMFLAGINT_ENUMUNSIGNED_INT_ENUMINT_FLAGr   r_   r   )r'   r$   r   rX   rK   r]   rU   	enum_type
superclassr[   trivialr`   s               r*   rF   rF   m  s    
 2 2;f$$:U"" 	"V$$$$<#-dj$,:KLLIJ7**>\%666!,JJ^|'888!,JJ^(=|?]'^^^!/JJ^|'<<<!/J , ! !*  GE !AF*FFZFF7FFFFAHHQKKKaKFFIl 	 	F& FOO+IIIIIII<#aKFe2 2r3   c                    d}|j         D ]}|j        |ur|j        |ur|j        rt	          |||j        |          }t          | ||          }t          |          }	|	|j        j	         d| dz  }	| 
                    |	           dS )z9 Output the type hints for all the variables in a scope. Trv   r   r   N)r   r   rK   rJ   _typer{   r=   r_   r    r1   r   )
r'   r$   r   rX   rK   r]   r8   r   py_typer`   s
             r*   rP   rP     s     EN  ?&((>&&  	fhmW=="E&999FOO	 %AAgAAAA
! r3   c                    g }g }	|D ]}
|
j         t          j        u r|
j        |ur |
j        r(|
j        t          j        u rP|j        dk    rdnd}t          |          }||
j        j        j
         d| dz  }|                     |            dS t          |
j        j                  r|
j        r|	                    |
           |                    |
           t!          |          dk    }d}|D ]}
t#          | |||
|||||	  	         d	}t!          |	          dk    }d}|	D ]}
t#          | |||
|||||	  	         d	}dS )
z' Output the type hints for a callable. QtCorer   zQtCore.z: typing.ClassVar[zpyqtSignal]
Nr   TF)r   r   r   commonrJ   pyqt_method_specifierr   SIGNALr    r_   r1   r   r   rR   is_reflectedr@   rA   	_overload)r'   r$   r   r[   rT   	is_methodrX   r]   nonreflected_overloadsreflected_overloadsr   rK   r`   r   first_overloads                  r*   rS   rS     s   
   4 4$(????&((  	
 )-@-GGG .H44BB)EAHO+0XXEXXXXAHHQKKKFF(/122 	4x7L 	4&&x0000"))(3333 +,,q0JN*  "dFHj.7F	, 	, 	, ())A-JN'  "dFHj.7F	, 	, 	, r3   c	                 ~   |D ]}	|	j         t          j        u r|	j        |ur |	j        r(t          |          }
|r|
d|j        j         dz  }
n|
dz  }
|                     |
           t          |||	j	        |          }t          |          }
|
d|j        j         | dz  }
|                     |
            dS dS )z' Output the type hints for a property. @z.setter
z
@property
def : ...
N)
r   r   r   r   rJ   r_   r1   r   _python_signaturer   )r'   r$   r   r   	is_setterr[   rT   rX   r]   r   r`   	signatures               r*   r   r     s       $(????&((  	FOO 	.TY^....AAA
%dFH4I 	 FOO	6DIN6I6666
5 r3   c	                    |j         j        t          j        t          j        fv }	|	r|sdS n'|r%|                     t          |          dz              |r,|j        r%|                     t          |          dz              |j         j        j	        }
|j
        }t          |          }|	rd}n|o|j         }t          |j         j                  rq|j        rt          |j         j                  }
t          |j                  dk    r9|j        r|j        d         }n|j        d         }t!          |g|j                  }t%          |||||          }|d	|
 | d
z  }|                     |           dS )z. Output the type hints for a single overload. Nr   z@staticmethod
z(self, other: object)r   r7   )r   result)	need_selfr   r   )r   rR   r   EQNEr   r_   	is_staticr    r1   r   r   r   r   rA   r   r   r   r   )r'   r$   r   r   r   r   r   rX   r]   
is_eq_slotr    r   r`   r   r   r   s                   r*   r   r     s   
 /)fi-CCJ  9 	F		 9
#77888 6X' 6
#44555o%*G(LA %+		9x'9#9	(/122 	4$ B()@AA <$%%))( /&+A.CC&+A.C(se+2 4  4  4 &dFL'#% % %	 	+	+	+	+	++AHHQKKKKKr3   c                    g }|r|                     d           d}t          |j                  D ]C\  }}|j        r|dz  }|j        r+t          | ||||          }	|	r|                     |	           Dd                    |          }|j        }
|
j        t          j
        u rt          |
j                  dk    rd}n |
j        }||j        |j        dk    rd}nd	}|s|dk    rd}|r|dk    p|dk    }|r|d
z  }g }|r)t          | ||
|          }	|	r|                     |	           |j        D ]2}|j        r)t          | |||          }	|	r|                     |	           3|d                    |          z  }|r|dz  }nd}d| d| S )z Return a Python signature. r   r7   r   r   rh   FNr   Tztyping.Tuple[]Nonerg   z) -> )r@   r   r   is_outis_inr   rB   r   r{   r   VOIDrA   derefs
type_hintshint_out)r$   r   r   rX   r   in_argsnr_outr   r   r   r   	is_resultr   	results_sneeds_tupleout_argss                   r*   r   r   G  s    G vF 00 ' ': 	aKF9 	'tVS'&IIIF 'v&&&ii  G F{l'''C,>,>!,C,C		&
 !j&9&E*J]acJcJcIII FQJJ	!0fqj?VaZ 	)(I 	(tVVW==F ('''> 	, 	,Cz ,"4g>> ,OOF+++TYYx(((	 	I	(w((Y(((r3   c                    |j         t          j        u rdS |dk     }d}|dk    r2|j        
|d| dz  }n!t	          |j        j                  }|| dz  }d}t          ||          |j        s|j        s|j        r|dz  }d}|j         t          j	        u r|t          |           d	z   z  }|t          | ||||
          z  }|j         t          j	        u r|dz  }|r|dz  }|dk    r|j        |dz  }|S )z Return a Python argument. Nr7   r   az: Fztyping.Optional[Tzarray[)outr   z = ...)arrayr	   
ARRAY_SIZEr1   _fix_py_keyword	_get_hint
allow_nonedisallow_noner   ARRAYr}   r   default_value)	r$   r   r   rX   r   r   r`   r1   used_optionals	            r*   r   r     s<    yM,,,tA:C
A{{8VAA"38=11DDA Mc"s~"c>O"TWT^"	
yM'''	d##h..tVS's	3	3	33A
yM'''	S 	S {{s(4	XHr3   c                 d    | j         d}n%|r| j         j        }n| j        rd}n| j         j        }|S )z Return a raw type hint. N)r   r   is_constrainedhint_in)r   r   hints      r*   r   r     sH     ~	 &~&		 &~%Kr3   Fc                 L    t          | |                              |||          S )z! Return the type hint of a type. )r   rk   )r$   r   r   rX   r   s        r*   r   r     s&     T3''44VS'JJJr3   c                     dd| z  z  S )z" Return the required indentation.  rp   rj   re   s    r*   r_   r_     s     !f*r3   c                 r    |r|                      |rdnd           n||                      d|z             dS )z' Output a newline if not already done. r   z

NF)r   )r'   r8   r]   r:   s       r*   r=   r=     sK      !
+V,,,,		
   5r3   )#Falser   Trueandasassertbreakclasscontinuedefdelelifelseexceptfinallyforfromglobalifimportinislambdanonlocalnotorpassraisereturntrywhilewithyieldexecprintc                 "    | t           v r| dz  } | S )zR Return a fixed word if it is a Python keyword (or has been at any
    time).
    _)_PYTHON_KEYWORDS)words    r*   r   r     s    
 Kr3   c                 (    | j         r
| j         dz   ndS )z^ Return the name of the sip module to be used as a prefix to an object
    in the module.
    r9   r   )r>   )r$   s    r*   r}   r}     s    
 %)O;4?S  ;r3   )Tr7   )r7   )NNr7   )Nr7   )T)r   )F)Tr7   N)+versionr   python_slotsr   r   specificationr   r   r	   r
   r   r   r   r   utilsr   r   
formattersr   r   r   r   r+   r"   r#   rC   rM   rO   r   rF   rP   rS   r   r   r   r   r   r   r_   r=   r  r   r}   rj   r3   r*   <module>r     s  0 ' & & & & & 9 9 9 9 9 9 9 9M M M M M M M M M M M M M M M M M M M M 2 2 2 2 2 2 2 2           & & &*? ? ?U U Up   8A5 A5 A5 A5F7 7 7 7>  .5 5 5 5p   2 3 3 3 3l  B0 0 0f@) @) @) @)F& & & &R   K K K K        < < < < <r3   