
    	hjr                     "   S r SSKrSSKrSSKrSSKJr  SSKJr  SSKrSSK	r	SSK
Jr  \r " S S\5      rSr\R"                  \R$                  \R&                  \R(                  \R*                  \R,                  \R.                  \R0                  \R2                  \R4                  \R6                  \R8                  \R:                  \R<                  \R>                  \R@                  \RB                  \R>                  \RD                  \RF                  \RH                  \RJ                  \RL                  \RN                  \RP                  /r)\*" \)5      r+ " S	 S
5      r, " S S5      r- " S S\-5      r. " S S\.5      r/ " S S\.5      r0\R<                  \R8                  \RN                  \RJ                  \R2                  \R8                  0r1S r2S r3\Rh                  \Rj                  -   S-   r6S r7SS jr8S r9 SS jr:\;S:X  a	  \<" S5        gg)a  Contains knowledge to build a COM object definition.

This module is used by both the @dynamic@ and @makepy@ modules to build
all knowledge of a COM object.

This module contains classes which contain the actual knowledge of the object.
This include parameter and return type information, the COM dispid and CLSID, etc.

Other modules may use this information to generate .py files, use the information
dynamically, or possibly even generate .html documentation for objects.
    N)chain)	iskeyword)TimeTypec                       \ rS rSrSrg)NotSupportedException#    N)__name__
__module____qualname____firstlineno____static_attributes__r	       hC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\win32com/client/build.pyr   r   #   s    r   r   DropIndirectionc                   X    \ rS rSrSrSS\R                  SS4S jrS rS r	S r
S	 rS
rg)MapEntryH   z3Simple holder for named attibutes - items in a map.Nr   c                     [        U[        5      (       a  Xl        S U l        OUS   U l        Xl        X l        X0l        X@l        XPl        SU l        X`l	        g Nr   )

isinstanceintdispiddescnamesdocresultCLSIDresultDocumentationwasPropertyhidden)self
desc_or_idr   r   r   	resultDocr    s          r   __init__MapEntry.__init__K   sU     j#&&$KDI$Q-DK"I
&#,  	 r   c                      SR                  U S9$ )NzMapEntry(dispid={s.dispid}, desc={s.desc}, names={s.names}, doc={s.doc!r}, resultCLSID={s.resultCLSID}, resultDocumentation={s.resultDocumentation}, wasProperty={s.wasProperty}, hidden={s.hidden})s)formatr!   s    r   __repr__MapEntry.__repr__d   s    = &4&.		r   c                 H    U R                   nU[        R                  :X  a  g U$ N)r   	pythoncomIID_NULLr!   rcs     r   GetResultCLSIDMapEntry.GetResultCLSIDk   s#    ###	r   c                 6    U R                  5       nUc  gSU S3$ )NNone')r2   r0   s     r   GetResultCLSIDStrMapEntry.GetResultCLSIDStrr   s&      ":2$ayr   c                 <    U R                   c  g U R                   S   $ r   )r   r)   s    r   GetResultNameMapEntry.GetResultNamey   s"    ##+''**r   )r   r   r   r    r   r   r   r   )r
   r   r   r   __doc__r.   r/   r$   r*   r2   r7   r:   r   r	   r   r   r   r   H   s5    9
 &&2+r   r   c                   "    \ rS rSrS rSS jrSrg)OleItem   Nc                     Xl         U R                   (       a  [        U R                   S   5      U l        OS U l        SU l        SU l        SU l        S U l        S U l        g r   )r   MakePublicAttributeNamepython_namebWrittenbIsDispatchbIsSinkclsidco_class)r!   r   s     r   r$   OleItem.__init__   sO    886txx{CD#D
r   )rD   rE   rC   rF   rG   r   rB   r-   r
   r   r   r   typenamer$   r   r	   r   r   r>   r>      s    H
r   r>   c                   h    \ rS rSrS rSS jrS rS rS rS r	SS jr
S	 rSS
 jrSS jrSS jrSrg)DispatchItem   Nc                     [         R                  X5        0 U l        0 U l        0 U l        0 U l        S U l        SU l        U(       a  U R                  XU5        g g r   )	r>   r$   propMap
propMapGet
propMapPutmapFuncsdefaultDispatchNamer    Build)r!   typeinfoattrr   bForUsers        r   r$   DispatchItem.__init__   sQ    ##' JJxx0 r   c                 D   U R                  UR                  S   5      u  p4nUS:  ay  US-   U:X  d  X2R                  S   S-   :X  a  SU-   nSnO(SnXR                  ;   d  XR                  ;   a  SU-   nOUnSUl        X R                  U'   U(       a  U R
                  U	 g g g )N         Setr   )CountInOutOptArgsr   rR   rP   r   rQ   r!   keyiteminsoutsoptsnewKeydeleteExistings           r   _propMapPutCheck_DispatchItem._propMapPutCheck_   s    001>47ax3#1)9"9!"!"--'3//+A"S[F F D$(MM&!OOC(  r   c                    U R                  UR                  S   5      u  p4nUS:  ad  UR                  S   U:X  d  X5:X  a  SU-   nSnOSnXR                  ;   a  SU-   nOUnSUl        X R                  U'   U(       a  U R                  U	 g g g )NrZ   r   r\   Getr[   )r^   r   rR   r   rP   r_   s           r   _propMapGetCheck_DispatchItem._propMapGetCheck_   s    001>47yy|s"ck!"!"--'"S[F F D$(MM&!OOC(  r   c                    UR                   [        R                  :X  d   eUR                  nUR                  n UR                  U5      nUS   nS n U(       a  UR                  U5      nUS:X  a  U(       a  Xpl        UR                  n	UR                  u  pn[        X5      u  pnXX4Ul
        / nUR                   H-  nUu  pn[        X5      u  nnnUXU4nUR                  U5        M/     [        U5      Ul        U[        R                  -  S:g  nU	[        R                   :X  a  U R"                  nOU	[        R$                  [        R&                  4;   a  U R(                  R+                  US 5      nUbY  UR,                  S   [        R$                  :X  a  U R.                  nSU-   nOVSUl        UU R.                  SU-   '   U R(                  nO0U R(                  nO#U	[        R2                  :X  a  U R.                  nOS nUb4  [5        X&XUU5      UU'   UR6                  [        R8                  :w  a  g UU4$ g ! [        R                   a    SnS n GNf = f! [        R                   a     GNf = f)Nr       r]   r[   )desckindr.   DESCKIND_FUNCDESCmemid
wFuncFlagsGetNames	ole_errorGetDocumentationrS   invkindrettype_ResolveTypeargsappendtupleFUNCFLAG_FHIDDENINVOKE_PROPERTYGETrP   INVOKE_PROPERTYPUTINVOKE_PROPERTYPUTREFrQ   getr   rR   r   INVOKE_FUNCr   funckindFUNC_DISPATCH)r!   rU   fdescrW   id	funcflagsr   namer   rw   typereprflagdefvalr   r#   argListargDescarg_type	arg_clsidarg_docr    mapexistings                          r   	_AddFunc_DispatchItem._AddFunc_   sQ   ~~!<!<<<<[[$$		%%b)E8D
 	//3 7t'+$-- "'+7+K(y ;zzG%,"HF+7+K(Hii7GNN7# " 7^
i888Q>i222//C 55y7V7VWW**46H#==#y'C'CC--C 4<D+,H(2:DMM%$,///Coo	-----CC{ !sFSCI ~~!8!88#;K "" 	DE	 "" 		s#   H: I :III10I1c                    UR                   [        R                  :X  d   eUR                  [        R                  :X  a  UR
                  nUR                  U5      nUR                  u  pgn[        Xa5      u  pin
XgU4Ul        S n U(       a  UR                  U5      nU R                  nUR                  S-  S:g  n[        X%XX5      XS   '   US   U4$ g ! [        R                   a     NNf = f)N@   r   )rp   r.   DESCKIND_VARDESCvarkindVAR_DISPATCHrr   rt   elemdescVarry   rv   ru   rO   	wVarFlagsr   )r!   rU   vardescrW   r   r   r   flagsr   r   r#   r   r   r    s                 r   _AddVar_DispatchItem._AddVar_  s     9#=#====??i444B%%b)E&-&9&9#HV/;H/O,H9"*6"9GC"33B7C
 ,,C''$.14F$)CaM !Hc?" && s   C C,+C,c                 >   US   U l         UR                  [        R                  -  S:g  U l        Uc  g [        US   5       H&  nUR                  U5      nU R                  XU5        M(     [        US   5       H&  nUR                  U5      nU R                  XU5        M(     [        U R                  R                  5       5       H  u  pgU R                  Xg5        M     [        U R                  R                  5       5       H  u  pgU R                  Xg5        M     g )Nr   r\      )rF   
wTypeFlagsr.   TYPEFLAG_FDISPATCHABLErD   rangeGetFuncDescr   
GetVarDescr   listrP   itemsrk   rQ   rg   )r!   rU   rV   rW   jr   r`   ra   s           r   rT   DispatchItem.Build,  s    !W
 OOi.N.NNSTTtAwA((+ENN8H5  
 tAwA''*EMM(84   doo3356IC""3- 7 doo3356IC""3- 7r   c                    S=n=p4U Hs  nUS   nUS:X  a  US-  nUS-  nM  U[         R                  -  (       a  US-  nU[         R                  -  (       a  US-  nU[         R                  -  (       d  Mn  US-  nMu     X#U4$ )zhReturn tuple counting in/outs/OPTS.  Sum of result may not be len(argTuple), as some args may be in/out.r   r[   )r.   PARAMFLAG_FINPARAMFLAG_FOPTPARAMFLAG_FOUT)r!   argTuplerb   outrd   argCheckinOuts          r   r^   DispatchItem.CountInOutOptArgsD  s    c HQKEzqq92221HC9333AID933331HC ! ~r   c                     UR                   b>  [        UR                   5      S:  d  UR                   S   S:w  a  U R                  XU5      $ U R                  XU5      $ )Nr\   )r   lenMakeDispatchFuncMethodMakeVarArgsFuncMethod)r!   entryr   
bMakeClasss       r   MakeFuncMethodDispatchItem.MakeFuncMethodU  sP    ::!s5::':ejjmr>Q..uJGG--e:FFr   c                    UR                   nUR                  nUR                  n/ nU(       a	  SnSn	Sn
SnOSnSn	Sn
SnSnUS   nUS-   U-   S	-   [        UUU	U
UU5      -   S
-   nUR	                  U5        U(       a-  US   (       a#  UR	                  US-   [        US   5      -   5        UR                  5       nU(       a  SU-  nOSnUS   S S n[        US    Vs/ s H  nUS S PM
     sn5      nUS    Vs/ s H  nUS   PM
     nnU Vs/ s H/  nU[        R                  [        R                  -  -  S:w  d  M-  UPM1     nnS n[        U5      S:X  Ga>  [        U5      S:X  Ga.  US   S:X  Ga$  US   nU[        ;   a#  SR                  UUUS   UU[        XF5      5      nOU[        R                  [        R                   4;   a  SR                  UUUS   UU[        XF5      5      nX S3-  nU[        R                   :X  a=  USR                  U5      -  nX S3-  nUSR                  U5      -  nX S3-  nX S3-  nX SU< SU S3-  nX S3-  nO>U[        R"                  :X  a*  U S3nUSR                  UUUS   UU[        XF5      5      -  nUc$  SR                  UUUS   UUUU[        XF5      5      nUR	                  U5        UR	                  S5        U$ s  snf s  snf s  snf ) N	defaultNamedOptArgdefaultNamedNotOptArgdefaultUnnamedArgrn   zpythoncom.Missingr   def z(selfz):r[   z'%s'r5      rZ   z;{}	return self._oleobj_.InvokeTypes({}, LCID, {}, {}, {}{})ro   z={}	ret = self._oleobj_.InvokeTypes({}, LCID, {}, {}, {!r}{})
z	if ret is not None:
z2{}		# See if this IUnknown is really an IDispatch
z		try:
z7{}			ret = ret.QueryInterface(pythoncom.IID_IDispatch)
z		except pythoncom.error:
z			return ret
z		ret = Dispatch(ret, , z)
z	return retz	# Result is a Unicode object
z={}	return self._oleobj_.InvokeTypes({}, LCID, {}, {}, {!r}{})z7{}	return self._ApplyTypes_({}, {}, {}, {}, {!r}, {}{}))r   r   r   BuildCallListr{   _makeDocStringr2   r|   r.   r   PARAMFLAG_FRETVALr   NoTranslateMapr(   _BuildArgListVT_DISPATCH
VT_UNKNOWNVT_BSTR)r!   r   r   r   r   r   r   ret
linePrefixdefNamedOptArgdefNamedNotOptArgdefUnnamedArg	defOutArgr   r'   resclsidretDescwhatargsDescparam_flagsr   
bad_paramsrds                          r   r   #DispatchItem.MakeDispatchFuncMethod\  s   

iiJ1N 7/MJ0N 3/M'	1X   !	  	
 	

13q6JJzD(>#a&+AAB'')(HH(2A,uQx8xt$r(x89
 ,18484tAw84 $
#y//)2M2MMNRSS # 	 

 z?aCLA$5'!*/B^#RYY!H!%/ 	--y/C/CDDU\\!H!%/ |#:;;---PWW" A <z22AV]]" A <'DEEA<'9::A|#;D82hZsSS|<00y(((!l"BCU\\!H!%/  9JQQae+	A 	

1

2
M 9
 5
s   K":K',K,?K,c                    UR                   nUR                  nUR                  n/ nSnU(       a  Sn	OSn	UR                  U	S-   U-   S-   U-   S-   5        U(       a-  US   (       a#  UR                  U	S-   [	        US   5      -   5        U(       a  US   n
O[
        R                  n
U	S	-   nUR                  U[        UR                  5      -   S
XS   4-  -   5        UR                  S5        U$ )Nr!   r   rn   r   (z	, *args):r[   ro   z7	return self._get_good_object_(self._oleobj_.Invoke(*((z,0,%d,1)+args)),'%s')r   )	r   r   r   r{   r   r.   DISPATCH_METHODstrr   )r!   r   r   r   r   r   r   r   	argPrefixr   
invoketyper'   s               r   r   "DispatchItem.MakeVarArgsFuncMethod  s    

ii	JJ

:&-3i?+MN3q6JJzD(>#a&+AABqJ"22JSS

ELL!!$;zQR8>T$TT	
 	

2
r   )rD   rF   rS   r    rR   rO   rP   rQ   )NNNr[   r[   )r
   r   r   r   rJ   r$   rg   rk   r   r   rT   r^   r   r   r   r   r	   r   r   rL   rL      s>    H
1)")"L\<.0"Grhr   rL   c                       \ rS rSrSS jrSrg)
VTableItemi  c                 z   [         R                  XX#5        Uc   S5       e[        [        U R                  R                  5       U R                  R                  5       U R                  R                  5       5      S S9nU Vs/ s H%  oUR                  UR                  UR                  4PM'     snU l        g s  snf )Nz&Can't build vtables without type info!c                      U R                   S   $ )Nr   )r   )ms    r   <lambda>"VTableItem.Build.<locals>.<lambda>  s    !&&)r   )r`   )rL   rT   sortedr   rR   valuesrP   rQ   r   r   r   vtableFuncs)r!   rU   rV   rW   	meth_listr   s         r   rT   VTableItem.Build  s    44:#M%MM#$$&&&(&&(
 $
	 BK
AJ[[%,,

3
 
s   ,B8)r   Nr   )r
   r   r   r   rT   r   r	   r   r   r   r     s    
r   r   c                       \ rS rSrS rS rSrg)LazyDispatchItemi  c                 H    US   U l         [        R                  U S XS5        g r   )rF   rL   r$   )r!   rV   r   s      r   r$   LazyDispatchItem.__init__  s!    !W
dD$Q7r   )rF   NrI   r	   r   r   r   r     s    !H8r   r   c                    [        U [        5      (       Gap  U u  p#U[        R                  :X  a  [        U[        5      =(       a    US   [        R                  :H  n[        X15      u  p5nU(       a(  U[        R                  [        R                  4;   a  X5U4$ U[        R                  -  XV4$ U[        R                  :X  a#  [        X15      u  p5n[        R                  U-  XV4$ U[        R                  :X  a  [        R                  S S 4$ U[        R                  :X  Gaf   UR                  U5      nUR%                  5       n	U	R&                  n
U
[        R(                  :X  a  U	R*                  n[        X5      $ U
[        R,                  [        R.                  4;   a  [        R0                  S S 4$ U
[        R2                  :X  a6  UR%                  5       S   nUR5                  S5      n[        R                  X4$ U
[        R6                  [        R8                  4;   a6  UR%                  5       S   nUR5                  S5      n[        R                  X4$ U
[        R:                  :X  a  [        R<                  S S 4$ [?        S5      e[@        RC                  X 5      S S 4$ ! [        R                   aL  nUR                  [        R                   [        R"                  4;   a  [        R                  S S 4s S nA$ e S nAff = f)Nr   r   z*Can not resolve alias or user-defined type)"r   r|   r.   VT_PTRVT_USERDEFINEDry   r   r   VT_BYREFVT_SAFEARRAYVT_ARRAY	VT_CARRAYGetRefTypeInfo	com_errorhresultwinerrorTYPE_E_CANTLOADLIBRARYTYPE_E_LIBNOTREGISTEREDGetTypeAttrtypekindTKIND_ALIAS
tdescAlias
TKIND_ENUMTKIND_MODULEVT_I4TKIND_DISPATCHrv   TKIND_INTERFACETKIND_COCLASSTKIND_RECORD	VT_RECORDr   typeSubstMapr   )r   	itypeinfoindir_vtsubreprwas_user	sub_clsidsub_docresultTypeInfodetails
resultAttrtypeKindtdescrF   retdocs                 r   ry   ry     s    (E""$y''' 7E*UwqzY=U=U/U  +7w*J'GG%%$$( 
 722Y///CCy---*6w*J'G%%/CCy*** &&d22y///	!*!9!9'!B (335J!**H9000"--#E::i22I4J4JKK d22Y555&224Q7'88< ,,e;;i779P9PQQ&224Q7'88< ++U::Y333 **D$66'(TUUH/t;;A && ??3344' 
 %//t;;s%   "J K?3A K:3K?9K::K?c           	         [        U S   [        U S   5      5      n[        U5      nSU;   a!  UR                  S5      nSU4-  X'   SU;   a  M!  [        [	        [
        USUS-    5      5      nSn[        U5      U:  a/  UR                  S[        U5      4-  5        [        U5      U:  a  M/  [        S[        U5      S5       H  nX==   S-  ss'   M     S	S
R                  U5      -   $ )z4Builds list of args to the underlying Invoke method.r\   rZ   Narg%dr[   r      z
			,r   )	maxr   r   indexr   rA   r{   r   join)r   r   numArgsiname_nums        r   r   r   X  s     %(CaM*GKE
%-KKaT> %- ,eA1.FGHEH
e*w
WE
},- e*w
 1c%j!$J %5!!!r   _c                 n    SnX   S:X  a  US-  nX   S:X  a  M  US:  d   S5       eXS-
  S  U S US-
   -   $ )Nr   r#  r[   rZ   z1Should only be here with names starting with '__'r	   )	classNamer!  s     r   demunge_leading_underscoresr&  q  sW    	A
,#
	Q ,#
6FFF6UW	'AE 222r   c                    U S S S:X  a  [        U 5      $ U S:X  a  Sn O[        U 5      (       a'  U R                  5       nX :X  a  UR                  5       nU$ U(       a<  [	        [
        U 5      (       a'  U R                  5       nX :X  a  UR                  5       nU$ U R                  5       (       a  U $ SR                  U  Vs/ s H  o3[        ;   d  M  UPM     sn5      $ s  snf )NrZ   __r5   NONErn   )	r&  r   
capitalizeupperhasattrbuiltinsisidentifierr  valid_identifier_chars)r%  	is_globalr   chars       r   rA   rA   {  s     !}*955	f	 		9		""$))+C
	wx33 ""$))+C
				!	!77YQYT:P2PDYQRRQs   >CCc                     U S   nU[        R                  -  (       a  U S   n[	        U[
        R
                  5      (       a"  [        [        UR                  5       5      5      $ [	        U[        5      (       aa  UR                  nUR                  nUR                  nUR                  nUR                  nUR                  nUR                   n	S[#        5       -  $ [        U5      $ g ! [          a    [        R                  n Nf = f)Nr[   rZ   z`pywintypes.Time((%(year)d, %(month)d, %(day)d, %(hour)d, %(minute)d, %(second)d,0,0,0,%(msec)d)))
IndexErrorr.   r   PARAMFLAG_FHASDEFAULTr   datetimereprr|   utctimetupler   yearmonthdayhourminutesecondmseclocals)
	defArgValr   valr8  r9  r:  r;  r<  r=  r>  s
             r   MakeDefaultArgReprrB    s    (!
 y...lc8,,-- c..0122c8$$88DIIE''C88DZZFZZF88Dr( Cy3  (''(s   C' 'DDc                 F   [        U S   5      nU S   nSn	US:X  a  Un
US-  nOXx-
  n
[        U5       H  n XS-      nUSLnU(       d  SU-  nU S   U   n[        U5      nUcP  US   [        R
                  [        R                  -  -  [        R
                  :X  a  UnOU(       a  X:  a  UnOUnOUn[        W5      nUS-   S	-  S:X  a  U	S
-  n	U(       a  U	S-  n	U	S-  n	U	SU-   -  n	U(       d  M  U	SU-   -  n	M     US:X  a  U	SUS   -   -  n	U	$ ! [         a    Sn Nf = f)z)Builds a Python declaration for a method.rZ   r\   rn   r   r[   Nr   r  r  
#z			r   =z, *)r   r   r3  rB  r.   r   r   rA   )r   r   r   r   r   r   
is_commentr   
numOptArgsstrvalfirstOptArgargargNamenamedArgthisdescr@  s                   r   r   r     su    %(mGqJFR1*W~	!GnGd*H oG8C=&x0	 y77):Q:QQR++, &	 )$2	$5	 -I)'2 !Gq=AdNF#hF$. 9cIo%FQ R R%%)##MQ  	H	s   DD D __main__zFUse 'makepy.py' to generate Python code - this module is just a helper)F)=r<   r-  r5  string	itertoolsr   keywordr   r.   r   
pywintypesr   r6  r   	Exceptionr   r   VT_BOOLVT_CLSIDVT_CYVT_DATE
VT_DECIMALVT_EMPTYVT_ERRORVT_FILETIME
VT_HRESULTVT_I1VT_I2r  VT_I8VT_INTVT_NULLVT_R4VT_R8	VT_STREAMVT_UI1VT_UI2VT_UI4VT_UI8VT_UINTVT_VOIDNoTranslateTypessetr   r   r>   rL   r   r   r  ry   r   ascii_lettersdigitsr/  r&  rA   rB  r   r
   printr	   r   r   <module>rq     s  
$        
 	I 	 $ OOOOOOOOOOOOOO3 8 %&4+ 4+n  W7 Wv

 
08| 8 iooy'')//D<N",  --=C 3!SRL ?D z	
RS r   