a „oe“qã@s¤dZddlZddlZddlZddlmZddlZddlZddlm Z dd„Z dZ Gdd „d e ƒZ d Zejejejejejejejejejejejejejejejejejejej ej!ej"ej#ej$ej%ej&gZ'iZ(e'D] Z)de(e)<qÔGd d „d ƒZ*Gd d„dƒZ+Gdd„de+ƒZ,Gdd„de,ƒZ-Gdd„de,ƒZ.ejejej%ej#ejejiZ/dd„Z0dd„Z1ej2ej3dZ4dd„Z5d%dd„Z6dd „Z7d&d!d"„Z8e9d#k�r e:d$ƒdS)'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)Ú iskeyword)ÚTimeTypecCstjdkr| d¡}t|ƒS)N)éÚmbcs)ÚsysÚ version_infoÚencodeÚrepr©Ús©r ú6C:\Program Files\Certbot\pkgs\win32com\client\build.pyÚ_makeDocString s  rzPythonCOM.Client.Build errorc@s eZdZdS)ÚNotSupportedExceptionN)Ú__name__Ú __module__Ú __qualname__r r r r r)srÚDropIndirectionc@sFeZdZdZddejddfdd„Zdd„Zdd „Zd d „Z d d „Z dS)ÚMapEntryz3Simple holder for named attibutes - items in a map.NrcCsVt|ƒtdƒkr||_d|_n|d|_||_||_||_||_||_d|_||_dS©Nr) ÚtypeÚdispidÚdescÚnamesÚdocÚ resultCLSIDÚresultDocumentationÚ wasPropertyÚhidden)ÚselfZ desc_or_idrrrÚ resultDocrr r r Ú__init__Ss  ÿzMapEntry.__init__cCs dj|d�S)NzÃMapEntry(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}r )Úformat©rr r r Ú__repr__lsÿüzMapEntry.__repr__cCs|j}|tjkrdS|S)N)rÚ pythoncomÚIID_NULL©rÚrcr r r ÚGetResultCLSIDss zMapEntry.GetResultCLSIDcCs | ¡}|durdStt|ƒƒS)NÚNone)r)r Ústrr'r r r ÚGetResultCLSIDStrzs ÿzMapEntry.GetResultCLSIDStrcCs|jdurdS|jdSr)rr#r r r Ú GetResultName‚s zMapEntry.GetResultName) rrrÚ__doc__r%r&r!r$r)r,r-r r r r rPsù rc@seZdZdZddd„ZdS)ÚOleItemNcCsF||_|jrt|jdƒ|_nd|_d|_d|_d|_d|_d|_dSr)rÚMakePublicAttributeNameZ python_nameZbWrittenÚ bIsDispatchZbIsSinkÚclsidZco_class)rrr r r r!‹szOleItem.__init__)N©rrrÚtypenamer!r r r r r/ˆsr/c@sjeZdZdZddd„Zdd„Zdd„Zd d „Zd d „Zdd d„Z dd„Z ddd„Z ddd„Z ddd„Z dS)Ú DispatchItemNécCsFt ||¡i|_i|_i|_i|_d|_d|_|rB| |||¡dSr) r/r!ÚpropMapÚ propMapGetÚ propMapPutÚmapFuncsÚdefaultDispatchNamerÚBuild)rÚtypeinfoÚattrrÚbForUserr r r r!›s zDispatchItem.__init__cCs�| |jd¡\}}}|dkrŒ|d|ks<||jddkrJd|}d}n&d}||jvsb||jvrld|}n|}d|_||j|<|rŒ|j|=dS)Nér6éÚSetr)ÚCountInOutOptArgsrr:r8rr9©rÚkeyÚitemÚinsZoutsÚoptsZnewKeyZdeleteExistingr r r Ú_propMapPutCheck_§s  zDispatchItem._propMapPutCheck_cCs~| |jd¡\}}}|dkrz|jd|ks4||krBd|}d}nd}||jvrZd|}n|}d|_||j|<|rz|j|=dS)Nr@rrAZGetr6)rCrr:rr8rDr r r Ú_propMapGetCheck_¸s   zDispatchItem._propMapGetCheck_cCsð|jtjksJ‚|j}|j}z| |¡}|d}WntjyNd}d}Yn0d}z|rd| |¡}WntjyzYn0|dkrŽ|rŽ||_|j } |j \} } } t | |ƒ\} } }| | | | f|_ g}|j D]4}|\} } } t | |ƒ\}}}|| | |f}|  |¡qÈt|ƒ|_ |tj@dk}| tjk�r*|j}nˆ| tjtjfv�rš|j |d¡}|du�r’|jdtjk�rv|j}d|}nd|_||jd|<|j}n|j}n| tjk�r®|j}nd}|du�rìt|||| ||ƒ||<|jtjk�rädS||fSdS)NrÚérBr6)Údesckindr%ZDESCKIND_FUNCDESCÚmemidZ wFuncFlagsÚGetNamesÚ ole_errorÚGetDocumentationr;ÚinvkindZrettypeÚ _ResolveTypeÚargsÚappendÚtupleZFUNCFLAG_FHIDDENZINVOKE_PROPERTYGETr8ZINVOKE_PROPERTYPUTZINVOKE_PROPERTYPUTREFr9Úgetrr:rZ INVOKE_FUNCrZfunckindZ FUNC_DISPATCH)rr=Úfdescr?ÚidZ funcflagsrÚnamerrRÚtypereprÚflagÚdefvalrr ZargListZargDescZarg_typeZ arg_clsidZarg_docrÚmapÚexistingr r r Ú _AddFunc_Ésd               zDispatchItem._AddFunc_cCsÂ|jtjksJ‚|jtjkrº|j}| |¡}|j\}}}t||ƒ\}} } |||f|_d} z|rh|  |¡} Wntj y~Yn0|j } |j d@dk} t ||| | | | ƒ| |d<|d| fSdSdS)Né@r)rMr%ZDESCKIND_VARDESCZvarkindZ VAR_DISPATCHrNrOZ elemdescVarrSrQrPr7Z wVarFlagsr)rr=Zvardescr?rYrr[Úflagsr]rr rr^rr r r Ú_AddVar_s(     ÿ  zDispatchItem._AddVar_cCsÈ|d|_|jtj@dk|_|dur(dSt|dƒD]}| |¡}| |||¡q4t|dƒD]}| |¡}|  |||¡q^t |j   ¡ƒD]\}}|  ||¡qŠt |j  ¡ƒD]\}}| ||¡q®dS)NrrAé)r2Z wTypeFlagsr%ZTYPEFLAG_FDISPATCHABLEr1ÚrangeZ GetFuncDescr`Z GetVarDescrcÚlistr8ÚitemsrJr9rI)rr=r>r?ÚjrXrErFr r r r<5s   zDispatchItem.BuildcCsxd}}}|D]\}|d}|dkr6|d}|d}q|tj@rH|d}|tj@rZ|d}|tj@r|d}q|||fS)zhReturn tuple counting in/outs/OPTS. Sum of result may not be len(argTuple), as some args may be in/out.rr6)r%Ú PARAMFLAG_FINZPARAMFLAG_FOPTÚPARAMFLAG_FOUT)rZargTuplerGÚoutrHZargCheckÚinOutr r r rCMs      zDispatchItem.CountInOutOptArgscCsF|jdur4t|jƒdks&|jddkr4| |||¡S| |||¡SdS)NrAéÿÿÿÿ)rÚlenÚMakeDispatchFuncMethodÚMakeVarArgsFuncMethod)rÚentryrZÚ bMakeClassr r r ÚMakeFuncMethod^s&zDispatchItem.MakeFuncMethodc Csš|j}|j}|j}g}|r,d}d} d} d} nd}d} d} d} d} |d} |d|d t||| | | | ƒd }| |¡|rž|d rž| |dt|d ƒ¡| ¡}|r´d |}nd }|ddd…}tdd„|dDƒƒ}dd„|dDƒ}dd„|Dƒ}d}t|ƒdk�rRt|ƒdk�rR|d dk�rR|d}|t v�r^d|| |d||t ||ƒf}nô|t j t j fv�rd|| |d|t|ƒt ||ƒf}|d|f}|t j k�rò|d|f}|d|f}|d|f}|d|f}|d|f}|d|t|ƒ|f}|d|}n<|t jk�rRd|f}|d|| |d|t|ƒt ||ƒf}|du�r‚d || |d||t|ƒ|t ||ƒf}| |¡| d¡|S)!Nú ZdefaultNamedOptArgZdefaultNamedNotOptArgZdefaultUnnamedArgrKzpythoncom.Missingrúdef z(selfz):r6z'%s'r*ér@cSsg|]}|dd…‘qS)Nr@r ©Ú.0Zwhatr r r Ú ‘óz7DispatchItem.MakeDispatchFuncMethod..cSsg|] }|d‘qS)r6r rwr r r ry–rzcSs$g|]}|tjtjB@dkr|‘qS)r)r%rjZPARAMFLAG_FRETVAL)rxr\r r r ry—sþz;%s return self._oleobj_.InvokeTypes(%d, LCID, %s, %s, %s%s)rLz;%s ret = self._oleobj_.InvokeTypes(%d, LCID, %s, %s, %s%s) z%s if ret is not None: z2%s # See if this IUnknown is really an IDispatch z %s try: z7%s ret = ret.QueryInterface(pythoncom.IID_IDispatch) z%s except pythoncom.error: z%s return ret z %s ret = Dispatch(ret, %s, %s) z %s return retz %s # Result is a Unicode object z5%s return self._ApplyTypes_(%d, %s, %s, %s, %s, %s%s))rrrÚ BuildCallListrUrr)rVrnÚNoTranslateMapÚ _BuildArgListr%Ú VT_DISPATCHÚ VT_UNKNOWNr ZVT_BSTR)rrqrZrrrXrrÚretÚ linePrefixÚdefNamedOptArgÚdefNamedNotOptArgÚ defUnnamedArgÚ defOutArgrYr ZresclsidZretDescZargsDescZ param_flagsZ bad_paramsZrdr r r roesèÿþýúü ôÿ   þ* úú ÿÿÿÿý  úÿÿÿ ø  z#DispatchItem.MakeDispatchFuncMethodc Csº|j}|j}|j}g}d}|r$d} nd} | | d|d|d¡|rl|drl| | dt|dƒ¡|rz|d} ntj} | d } | | t|jƒd | |d f¡| d¡|S) NrrtrKruú(z , *args):r6rLz7 return self._get_good_object_(self._oleobj_.Invoke(*((z,0,%d,1)+args)),'%s')r) rrrrUrr%ZDISPATCH_METHODr+r) rrqrZrrrXrrr€Z argPrefixr�Z invoketyper r r r rpãs(  ÿ z"DispatchItem.MakeVarArgsFuncMethod)NNNr6)r6)r6)r6)r6)rrrr4r!rIrJr`rcr<rCrsrorpr r r r r5˜s N   ~r5c@seZdZddd„ZdS)Ú VTableItemr6cCs†t ||||¡|dus Jdƒ‚t|j ¡ƒt|j ¡ƒt|j ¡ƒ}|jdd„d�g|_|D]}|j  |j |j |j f¡qddS)Nz%Cant build vtables without type info!cSs |jdS)Nrd)r)Úmr r r Úrzz"VTableItem.Build..)rE) r5r<rfr:Úvaluesr8r9ÚsortZ vtableFuncsrUrrr)rr=r>r?Z meth_listrqr r r r<þs  ÿ þÿzVTableItem.BuildN)r6)rrrr<r r r r r‡ýsr‡c@seZdZdZdd„ZdS)ÚLazyDispatchItemcCs |d|_t |d||d¡dSr)r2r5r!)rr>rr r r r!s zLazyDispatchItem.__init__Nr3r r r r rŒsrŒc Cs t|ƒtk�rø|\}}|tjkr|t|ƒtko8|dtjk}t||ƒ\}}}|rl|tjtjtjfvrl|||fS|tj B||fS|tj kr¦t||ƒ\}}}tj |B||fS|tj kr¼tj ddfS|tjk�røz|  |¡}WnVtj�y,}z:|jtjtjfv�rtjddfWYd}~S‚WYd}~n d}~00| ¡} | j} | tjk�rX| j} t| |ƒS| tjtjfv�rvtjddfS| tjk�r¤| ¡d} | d¡} tj| | fS| tjtjfv�rØ| ¡d} | d¡} tj| | fS| tjk�rðtjddfStdƒ‚t  !||¡ddfS)Nrrmz*Can not resolve alias or user-defined type)"rrVr%ZVT_PTRZVT_USERDEFINEDrSr~rZ VT_RECORDZVT_BYREFZ VT_SAFEARRAYZVT_ARRAYZ VT_CARRAYZGetRefTypeInfoZ com_errorZhresultÚwinerrorZTYPE_E_CANTLOADLIBRARYZTYPE_E_LIBNOTREGISTEREDZ GetTypeAttrZtypekindZ TKIND_ALIASZ tdescAliasZ TKIND_ENUMZ TKIND_MODULEÚVT_I4ZTKIND_DISPATCHrQZTKIND_INTERFACEZ TKIND_COCLASSZ TKIND_RECORDrÚ typeSubstMaprW)r[Z itypeinfoZindir_vtZsubreprZwas_userZ sub_clsidZsub_docZresultTypeInfoZdetailsZ resultAttrZtypeKindZtdescr2Zretdocr r r rS"s\ ý     þ            rScCs´t|dt|dƒƒ}t|ƒ}d|vr@| d¡}d|f||<qttt|d|d…ƒƒ}d}t|ƒ|kr€| dt|ƒf¡q^tdt|ƒdƒD]}||d||<q�d d  |¡S) z4Builds list of args to the underlying Invoke method.rAr@Núarg%dr6réz ú,ú, ) ÚmaxrnrfÚindexr^r0rUreÚjoin)rXrÚnumArgsÚiZname_numr r r r}hs  r}Ú_cCsJd}||dkr|d7}q|dks*Jdƒ‚||dd…|d|d…S)Nrr™r6r@z1Should only be here with names starting with '__'r )Ú classNamer˜r r r Údemunge_leading_underscores‚s   r›FcCsˆ|dd…dkrt|ƒS|dkr&d}nNt|ƒrJ| ¡}||krF| ¡}|S|rttt|ƒrt| ¡}||krp| ¡}|Sd dd„|Dƒ¡S)Nr@Ú__r*ZNONErKcSsg|]}|tvr|‘qSr )Úvalid_identifier_chars)rxÚcharr r r ryªrzz+MakePublicAttributeName..)r›rÚ capitalizeÚupperÚhasattrÚ __builtins__r–)ršZ is_globalr€r r r r0Œsr0c Cs z |d}Wnty$tj}Yn0|tj@rœ|d}t|tjƒrTtt| ¡ƒƒSt |ƒt ur”|j }|j }|j }|j}|j}|j}|j} dtƒSt|ƒSdS)Nr6r@z`pywintypes.Time((%(year)d, %(month)d, %(day)d, %(hour)d, %(minute)d, %(second)d,0,0,0,%(msec)d)))Ú IndexErrorr%riZPARAMFLAG_FHASDEFAULTÚ isinstanceÚdatetimer rVZ utctimetuplerrÚyearÚmonthÚdayÚhourÚminuteÚsecondÚmsecÚlocals) Ú defArgValrlÚvalr¦r§r¨r©rªr«r¬r r r ÚMakeDefaultArgRepr²s,      ÿÿr°c CsJt|dƒ}|d}d} |dkr.|} |d}n||} t|ƒD]ì} z|| d} | du} Wntypd} Yn0| s~d| } |d| }t|ƒ}|durÖ|dtjtjB@tjkrº|}n| rÒ| | krÌ|}qÖ|}n|}t| ƒ} | dd dk�r| d } |�r| d } | d } | d | } |r>| d|} q>|dk�rF| d|d} | S)z)Builds a Python declaration for a method.r@rArKrmr6Nrr�r‘Ú ú#z r“ú=z, *)rnrer£r°r%rjrir0)rXrr‚rƒr„r…Z is_commentr—Z numOptArgsZstrvalZ firstOptArgÚargZargNameZnamedArgZthisdescr®r r r r{ÑsP        ÿÿ  r{Ú__main__zFUse 'makepy.py' to generate Python code - this module is just a helper)F)F);r.r¥ÚstringrÚkeywordrr%r�Z pywintypesrrÚerrorÚ ExceptionrrZVT_BOOLZVT_CLSIDZVT_CYZVT_DATEZ VT_DECIMALZVT_EMPTYZVT_ERRORZ VT_FILETIMEZ VT_HRESULTZVT_I1ZVT_I2rŽZVT_I8ZVT_INTZVT_NULLZVT_R4ZVT_R8Z VT_STREAMZVT_UI1ZVT_UI2ZVT_UI4ZVT_UI8ZVT_UINTZVT_VOIDZNoTranslateTypesr|Úvrr/r5r‡rŒr�rSr}Ú ascii_lettersÚdigitsr�r›r0r°r{rÚprintr r r r Úsz  ç 8g ýF &&ù C