a „oe|Ûã @s�dZddlZddlZddlZddlZddlZddlmZdZdZ dZ dZ d Z ej d ejd ejd ejd ejd ejd ejd ejd ejd ejd ejd ejdejdejd ejdejd iZdd„Zdd„Zdd„Z dd„Z!Gdd„dƒZ"Gdd„dej#e"ƒZ$dd„Z%Gdd„dej#e"ƒZ&Gd d!„d!ej#e"ƒZ'Gd"d#„d#ej(e"ƒZ(Gd$d%„d%ej)e"ƒZ)Gd&d'„d'ej#e"ƒZ*Gd(d)„d)ƒZ+Gd*d+„d+ƒZ,e-d,k�rŒe.d-ƒdS).a…genpy.py - The worker for makepy. See makepy.py for more details This code was moved simply to speed Python in normal circumstances. As the makepy.py is normally run from the command line, it reparses the code each time. Now makepy is nothing more than the command line handler and public interface. The makepy command line etc handling is also getting large enough in its own right! éNé)Úbuildz makepy.errorz0.5.01Zfullz demand(base)z demand(child)z types.IntTypeztypes.FloatTypeztypes.StringTypeztypes.TypeTypeztypes.LongTypezpythoncom.PyTimeTypecCs>g}|dd…D]$}t |¡}|dur*q6| |¡qt|ƒS©Nr)rÚMakeDefaultArgReprÚappendÚtuple)ZargsDescÚretÚdescÚdefault©r ú6C:\Program Files\Certbot\pkgs\win32com\client\genpy.pyÚMakeDefaultArgsForPropertyPut>s  r cCs.tdd„|Dƒƒ}d|||dd…|||fS)NcSsg|]}|dd…‘qS)Nér )Ú.0Zwhatr r r Ú Józ$MakeMapLineEntry..z(%s, %d, %s, %s, "%s", %s)r)r)ÚdispidZwFlagsZretTypeZargTypesÚuserÚ resultCLSIDr r r ÚMakeMapLineEntryHs úrcCs |dd…dkr|Sd|SdS)NrZOnr )Z eventNamer r r ÚMakeEventMethodNameUsrcCsvtd|d�t|j ¡ƒt|j ¡ƒt|j ¡ƒD].\}}|j}td|jt|j dƒf|d�q6td|d�dS)Nz _dispid_to_func_ = {©Úfilez %9d : "%s",rz }) ÚprintÚlistÚ propMapGetÚitemsÚ propMapPutÚmapFuncsr ÚmemidrÚnames)ÚobjÚstreamÚnameÚentryÚfdescr r r ÚWriteSinkEventMap\s   ÿ þÿ þr&c@s$eZdZdd„Zdd„Zdd„ZdS)Ú WritableItemcCs6t|j|jƒ}|dkr2|jr2t|jd|jdƒ}|S)zCompare for sortingr)ÚcmpÚorderÚdoc)ÚselfÚotherrr r r Ú__cmp__oszWritableItem.__cmp__cCs$|j|jkr|j|jkS|j|jkS©N)r)r*)r+r,r r r Ú__lt__ws  zWritableItem.__lt__cCsdt|jƒ|jfS)NzOleItem: doc=%s, order=%d)Úreprr*r)©r+r r r Ú__repr__|szWritableItem.__repr__N)Ú__name__Ú __module__Ú __qualname__r-r/r2r r r r r'msr'c@s&eZdZdZdZd dd„Zdd„ZdS) Ú RecordItemé ZRECORDNrcCstj ||¡|d|_dS©Nr)rÚOleItemÚ__init__Úclsid)r+ZtypeInfoZtypeAttrr*ÚbForUserr r r r:„szRecordItem.__init__cCsdSr.r ©r+Ú generatorr r r Ú WriteClass�szRecordItem.WriteClass)Nr©r3r4r5r)Útypenamer:r?r r r r r6€s r6cCs>| ¡D]0}|jr|jr|jd|jdkr| ||¡qdSr8)Úvaluesr*ÚaliasDocÚWriteAliasItem)ÚitemZ aliasItemsr"Úaliasr r r ÚWriteAliasesForItem•s  rGc@s&eZdZdZdZd dd„Zdd„ZdS) Ú AliasItemrZALIASNrcCsztj ||¡|d}||_t|ƒtdƒkrjt|dƒtdƒkrj|d}| |¡}| d¡|_| ¡|_ n d|_d|_ dS)Nér rréÿÿÿÿ) rr9r:ÚattrÚtypeÚGetRefTypeInfoÚGetDocumentationrCÚ GetTypeAttrZ aliasAttr)r+ÚtypeinforKr*r<ÚaiZhrefZalinfor r r r:Ÿsÿ   zAliasItem.__init__cCsÔ|jr dS|jrN|jd}||vr2|| ||¡t|jdd||d�nr|jd}t|ƒtdƒkrÀz&t|}td|jd|f|d�Wn0ty¾t|jddt |ƒ|d�Yn0t|d�d|_dS)Nrz = rrIz# %s=%sz# = None # Can't convert alias info r) ÚbWrittenrCrDrr*rKrLÚmapVTToTypeStringÚKeyErrorÚstr)r+Z aliasDictr"ZdepNamerQZtypeStrr r r rD¯s&   þ  zAliasItem.WriteAliasItem)Nr)r3r4r5r)rAr:rDr r r r rH›s rHc@s&eZdZdZdZddd„Zdd„ZdS) ÚEnumerationItemrZ ENUMERATIONNc Cs~tj ||¡|d|_i|_|d}|tj@p8|tj@|_t |dƒD]0}|  |¡}|  |d¡d}t  |¡|j|<qHdS)Nré é) rr9r:r;ÚmapVarsÚ pythoncomZTYPEFLAG_FHIDDENZTYPEFLAG_FRESTRICTEDÚhiddenÚrangeZ GetVarDescZGetNamesZMapEntry) r+rPrKr*r<Z typeFlagsÚjÚvdescr#r r r r:Ìs  þ zEnumerationItem.__init__c CsÆd}|jd}t|j ¡ƒ}| ¡|D]˜}|j|}|j}|dtjkr(|d}t|ƒ} zt | ddƒWn.t y˜|   dd¡} d| dd} Yn0t d t  |d ¡| |f|d �|d7}q(|S) NrérzÚevalú"ú'z6 # This VARIANT type cannot be converted automaticallyz %-30s=%-10s # from enum %sTr)r*rrYÚkeysÚsortr rZZ VAR_CONSTr0ÚcompileÚ SyntaxErrorÚreplacerrÚMakePublicAttributeName) r+r"ZnumZenumNamer r#r$r^ÚvalZuser r r ÚWriteEnumerationItemsás<    ÿþýÿÿý z%EnumerationItem.WriteEnumerationItems)Nr)r3r4r5r)rAr:rjr r r r rVÈs rVc@s eZdZdZdd„Zdd„ZdS)Ú VTableItemr_cCs| |¡d|_dSr)ÚWriteVTableMaprRr=r r r r? s zVTableItem.WriteClassc Cs|j}td|j|jf|d�td|jf|d�|jD�]À}|\}}}|jtjksXJ‚g}d}tdd|d�|D]:} tt| ƒdd|d�|d }|d dkrrtd d|d�qrtd ||j |j fd|d�|j D]t} |d }|d dkrötd d|d�t   | ¡} | d du�rd} n t| d ƒ} tt| d| d | | fƒdd|d�qÐtdd|d�tt|jƒdd|d�tt|jƒdd|d�tt|jƒdd|d�tt|jƒdd|d�tt|jƒdd|d�tt|jƒdd|d�tt|jƒdd|d�td|d�q8td|d�t|d�dS)Nz%s_vtables_dispatch_ = %drz%s_vtables_ = [rz ((ú )Úendrú,réz z), %d, (%r, %r, [éz],z)),ú])rrÚ python_nameÚ bIsDispatchZ vtableFuncsÚdesckindrZÚDESCKIND_FUNCDESCr0rZ scodeArrayÚargsrrÚfunckindÚinvkindZcallconvZ cParamsOptZoVftZrettypeÚ wFuncFlags) r+r>r"Úvr rr Z arg_reprsZitem_numr#ÚargZdefvalZ arg3_reprr r r rl sXþ   ý    ÿ zVTableItem.WriteVTableMapN)r3r4r5r)r?rlr r r r rksrkc@sBeZdZdZddd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)Ú DispatchItemrqNcCs"tj ||||¡||_d|_dSr.)rr}r:Ú type_attrÚ coclass_clsid)r+rPrKr*r r r r:AszDispatchItem.__init__cCs^|js|jjtjksdS|jr4| |¡| |¡n| |¡|  |¡t |j d�d|_ dS)Nrr) rtr~ÚtypekindrZÚTKIND_DISPATCHÚbIsSinkÚWriteEventSinkClassHeaderÚWriteCallbackClassBodyÚWriteClassHeaderÚWriteClassBodyrrrRr=r r r r?Fsÿ þ     zDispatchItem.WriteClasscCsÚ| ¡|j}|j}td|jd|d�|drLtdt |d¡|d�z t |j ¡}td||d�Wntj y€Yn0tdt |j ƒ|d�|j dur°td|d�ntd t |j ƒ|d�t|d�d|_ dS) Núclass z(DispatchBaseClass):rrú ú+ # This class is creatable by the name '%s'z CLSID = ú coclass_clsid = Noneú coclass_clsid = )ÚcheckWriteDispatchBaseClassr*rrrsrÚ_makeDocStringrZÚProgIDFromCLSIDr;Ú com_errorr0rrR©r+r>r*r"ÚprogIdr r r r…Ws& ÿ   zDispatchItem.WriteClassHeadercCs| ¡|j}|j}td|jd|d�|drLtdt |d¡|d�z t |j ¡}td||d�Wntj y€Yn0tdt |j ƒ|d�|j dur°td|d�ntd t |j ƒ|d�td |d�t ||ƒt|d�td |d�td |d�td |d�td|d�td|d�td|d�td|d�td|d�td|d�td|d�td|d�td|d�td|d�td|d�td|d�td|d�td|d�td|d�td|d�td|d�td|d�td |d�t|d�d|_dS)!Nr‡ú:rrrˆr‰z CLSID = CLSID_Sink = rŠr‹z/ _public_methods_ = [] # For COM Server supportz! def __init__(self, oobj = None):z if oobj is None:z self._olecp = Nonez else:z import win32com.server.utilz8 from win32com.server.policy import EventHandlerPolicyzL cpc=oobj._oleobj_.QueryInterface(pythoncom.IID_IConnectionPointContainer)z. cp=cpc.FindConnectionPoint(self.CLSID_Sink)zR cookie=cp.Advise(win32com.server.util.wrap(self, usePolicy=EventHandlerPolicy))z- self._olecp,self._olecp_cookie = cp,cookiez def __del__(self):ú try:z self.close()z except pythoncom.com_error:z passz def close(self):z if self._olecp is not None:zV cp,cookie,self._olecp,self._olecp_cookie = self._olecp,self._olecp_cookie,None,Nonez cp.Unadvise(cookie)z" def _query_interface_(self, iid):z import win32com.server.utilzA if iid==self.CLSID_Sink: return win32com.server.util.wrap(self))ÚcheckWriteEventBaseClassr*rrrsrr�rZrŽr;r�r0rr&rRr�r r r rƒmst ÿ          ÿþ þ        þ   þ z&DispatchItem.WriteEventSinkClassHeaderc CsØ|j}td|d�td|d�t|j ¡ƒt|j ¡ƒt|j ¡ƒD]z\}}|j}t|j dƒ}td|dt j ||j ddd d d d �d |d�|j rH|j drHtdt   |j d¡|d�qHt|d�d|_dS)Nz # Event HandlersrzE # If you create handlers, they should have the following prototypes:rz# def z(selfZdefaultNamedOptArgZdefaultNamedNotOptArgZdefaultUnnamedArgzpythoncom.MissingT)Z is_commentz):rz# )rrrrrrrr rr rZ BuildCallListr*r�rR)r+r>r"r#r$r%ZmethNamer r r r„ªsL þ  ÿ þÿ ÿþùý ô ò z#DispatchItem.WriteCallbackClassBodyc CsD|j}t|j ¡ƒ}| ¡dddddœ}d}|D�]}|j|}|jjtjksTJ‚|jj }|jj tj @rv|tj krvq2|jj tjkr†q2|tjkr–d} n(|tj kr¶||jjdf|d<q2n| ¡} | |vrä|| durä||jjdf|| <|jsð|js2| ¡�rtd| ¡|d�|j�r&td||d�| |t |¡¡} | D]} t| |d��q raise TypeError("This object does not support enumeration")z. return win32com.client.util.Iterator(ob, %s)rEz^ #This class has Item property/method which allows indexed access with the object[key] syntax.zQ #Some objects will accept a string or other type of key in addition to integers.z? #Note that many Office objects do not use zero-based indexing.z def __getitem__(self, key):zZ return self._get_good_object_(self._oleobj_.Invoke(*(%d, LCID, %d, 1, key)), "Item", %s)r•Ú__len__z3 def __len__(self): return self._ApplyTypes_(*%s)z; #This class has Count() %s - allow len(ob) to provide thiszP #This class has a __len__ - this is needed so 'if object:' always returns TRUE.z def __nonzero__(self):z return True)%rrrrcrdr rurZrvrrzZFUNCFLAG_FRESTRICTEDZDISPID_NEWENUMrxZ FUNC_DISPATCHZ DISPID_VALUEryÚlowerÚ bBuildHiddenr[Z GetResultNamerZ wasPropertyZMakeFuncMethodrrhZpropMaprZDISPATCH_PROPERTYGETZGetResultCLSIDStrrrZDISPATCH_PROPERTYPUTrr r ZDISPATCH_METHOD)r+r>r"r Z specialItemsZ itemCountr#r$rZlkeyrÚlineÚkeyZ resultNameZdetailsZ resultDescZargDescZmapEntryZ defArgDescZ invoketypeZpropArgsrAZ enumEntryryrr r r r†Ísü   ÿþ  ÿ ÿ  ÿý  ÿýú ÿ ÿýþ     ÿýúÿ ÿýþ     üÿø   üÿø   ÿÿþ          ÿý þþ þþþ  ÿý  ÿÿýþ zDispatchItem.WriteClassBody)N) r3r4r5r)r:r?r…rƒr„r†r r r r r}>s =#r}c@s.eZdZdZdZdggdfdd„Zdd„ZdS) Ú CoClassItemrpZCOCLASSNrcCs.tj ||¡|d|_||_||_d|_dS)Nrr)rr9r:r;ÚsourcesÚ interfacesrt)r+rPrKr*r¤r¥r<r r r r:üs  zCoClassItem.__init__c Cs„| ¡|j}|j}|jtkrªg}|jD]\}}| |¡q(|jD]\}}| |¡qBtd|d�|D]B}td|j |j f|d�td|j |j |j |j f|d�d|_ qfz t   |j¡}td||d�Wnt jyÞYn0td|j |d�|�r|d�rtd|d|d�td |jf|d�td |d�d}|jD]H\} }|t j@�rX| }| j �rh| j } ntt| jƒƒ} td | |d��q@td |d�|�rÌ|j �r¬|j } ntt|jƒƒ} td | f|d�td|d�d}|jD]J\} }|t j@�rú| }| j �r | j } ntt| jƒƒ} td | f|d��qâtd |d�|�rp|j �rP|j } ntt|jƒƒ} td| f|d�d|_ t|d�dS)Nz import sysrz__import__('%s.%s')z%s = sys.modules['%s.%s'].%srz(# This CoClass is known by the name '%s'z'class %s(CoClassBaseClass): # A CoClassz # z CLSID = %rz coclass_sources = [z %s,z ]z default_source = %sz coclass_interfaces = [z default_interface = %s)ÚcheckWriteCoClassBaseClassr*rÚ generate_typeÚGEN_DEMAND_CHILDr¤rr¥rÚ base_mod_namersrRrZrŽr;r�ZIMPLTYPEFLAG_FDEFAULTr0rU) r+r>r*r"Zreferenced_itemsÚrefÚflagr‘ZdefItemrEr¢ZdefNamer r r r?sŠ    þüÿø   ÿ      zCoClassItem.WriteClassr@r r r r r£øsr£c@sXeZdZdd„Zdd„Zdd„Zddd „Zdd d „Zd d „Zdd„Z dd„Z dd„Z dS)ÚGeneratorProgresscCsdSr.r r1r r r r:UszGeneratorProgress.__init__cCs ||_dS)zCalled when the process starts.N)Útlb_desc)r+r­r r r ÚStartingXszGeneratorProgress.StartingcCsdS)z$Called when the process is complete.Nr r1r r r ÚFinished\szGeneratorProgress.FinishedNcCsdS)zyWe are entering a major step. If maxticks, then this is how many ticks we expect to make until finished Nr )r+r Zmaxticksr r r ÚSetDescription_sz GeneratorProgress.SetDescriptioncCsdS)z>Minor progress step. Can provide new description if necessaryNr ©r+r r r r ÚTickdszGeneratorProgress.TickcCsdS)zVerbose/Debugging output.Nr r±r r r ÚVerboseProgressgsz!GeneratorProgress.VerboseProgresscCsdS)zIf a warning is generatedNr r±r r r Ú LogWarningjszGeneratorProgress.LogWarningcCsdSr.r ©r+Úfilenamer r r ÚLogBeginGeneratemsz"GeneratorProgress.LogBeginGeneratecCsdSr.r r1r r r ÚClosepszGeneratorProgress.Close)N)N) r3r4r5r:r®r¯r°r²r³r´r·r¸r r r r r¬Ts  r¬c@sšeZdZd'dd„Zdd„Zdd„Zd d „Zd d „Zd d„Zd(dd„Z dd„Z dd„Z d)dd„Z dd„Z dd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„ZdS)*Ú GeneratorrNcCsD|dusJdƒ‚d|_d|_d|_||_||_||_||_d|_dS)Nz#this is deprecated and will go awayr)ÚbHaveWrittenDispatchBaseClassÚbHaveWrittenCoClassBaseClassÚbHaveWrittenEventBaseClassÚtypelibÚsourceFilenamer Úprogressr)r+r½r¾ZprogressObjectr ZbUnicodeToStringr r r r:uszGenerator.__init__cCsZg}t|j ¡ƒD]B}|j |¡}|j |¡}|j |¡}| ¡}| ||||f¡q|Sr.)r\r½ZGetTypeInfoCountZ GetTypeInfoZGetTypeInfoTyperNrOr)r+rÚiÚinfoÚinfotyper*rKr r r ÚCollectOleItemInfosFromTypeˆs   z%Generator.CollectOleItemInfosFromTypec Cs”|\}}}}g}t|dƒD]b}| |¡}z| | |¡¡} WntjyVYqYn0|  ¡} | || j| |   d¡| |f¡qt |||ƒ} | |fS)Nr˜rJ) r\ZGetImplTypeFlagsrMÚGetRefTypeOfImplTyperZr�rOrr€rNr£) r+Útype_info_tuplerÁrÂr*rKÚ child_infosr]ÚflagsÚrefTypeÚrefAttrÚnewItemr r r Ú_Build_CoClass’s(   úÿ zGenerator._Build_CoClasscCs i}i}|D]ò\}}} } } } | jtjksB| jtjkr | dtj@r | d} | |vr\|| }nt| | | ƒ}|||j<|j|_| tj@ršd|_ || f||j<n|| f||j<| |vr | dtj @r |   |   d¡¡} |   ¡} | jtjksêJdƒ‚t| | | ƒ}||| <q t| ¡ƒ|_t| ¡ƒ|_dS)NrWrrrJzmust be interface bynow!)r€rZr�ÚTKIND_INTERFACEÚTYPEFLAG_FDISPATCHABLEr}r;rZIMPLTYPEFLAG_FSOURCEr‚ÚTYPEFLAG_FDUALrMrÄrOrkrrBr¤r¥)r+ZcoclassZ coclass_infoÚoleItemsÚ vtableItemsr¤r¥rÁÚ info_typerÈr*rÉrÇr;ZdispItemÚ vtableItemr r r Ú_Build_CoClassChildren­s:  ÿ þ     ÿþ  z Generator._Build_CoClassChildrenc Csª|\}}}}d}}|tjks6|tjkrv|dtj@rvt|||ƒ}|jtj@rr| d¡}| |¡}|  ¡}tj}nd}|dtjfvsŒJdƒ‚|tjkr¢t |||ƒ}||fS)NrWrJz&Must be a real interface at this point) rZr�rÌrÍr}Z wTypeFlagsrÎrÄrMrOrk) r+rÅrÁrÂr*rKÚoleItemrÒZrefhtyper r r Ú_Build_InterfaceÎs.  ÿ þ    þý  zGenerator._Build_InterfacecCs>|jsJdƒ‚i}i}i}i}| ¡D�]}|\}}}} | d} |tjksT|tjkrpt|| |ƒ} | || jd<q&|tjtjfvr°| |vr®|  |¡\} } | || <| dur®| || <q&|tj ksÄ|tj krÜt || |ƒ} | || j <q&|tjkrêq&q&|tjk�r | |¡\} }| | |||¡| || j <q&|j d|¡q&||||fS)NzNThis code doesnt look at the hidden flag - I thought everyone set it true!?!?!rzUnknown TKIND found: %d)r rÃrZZ TKIND_ENUMZ TKIND_MODULErVr*r�rÌrÕZ TKIND_RECORDZ TKIND_UNIONr6r;Z TKIND_ALIASÚ TKIND_COCLASSrËrÓr¿r´)r+rÏÚ enumItemsÚ recordItemsrÐrÅrÁrÂr*rKr;rÊrÔrÒrÆr r r ÚBuildOleItemsFromTypeçsDÿþ   ÿÿ     zGenerator.BuildOleItemsFromTypeÚmbcscCs| |¡}t|d|d�S)NZwt)Úencoding)Úget_temp_filenameÚopen)r+r¶rÛÚ temp_filenamer r r Ú open_writers zGenerator.open_writerc Cs | ¡zt |¡Wntjy*Yn0| |¡}|r’zt ||¡WqœtjyŽzt |¡Wntjy|Yn0t ||¡Yqœ0n t |¡dSr.)ÚcloseÚosÚunlinkÚerrorrÜÚrename)r+r¶ÚfÚworkedrÞr r r Ú finish_writers  zGenerator.finish_writercCsd|t ¡fS)Nz %s.%d.temp)ráÚgetpidrµr r r rÜ;szGenerator.get_temp_filenamercCs4|r t|_nt|_||_| ¡d|_|j ¡dSr.)ÚGEN_DEMAND_BASEr§ÚGEN_FULLrÚ do_generater¿r¯)r+rZ is_for_demandr r r Úgenerate>szGenerator.generatecCsR|j ¡}|j d¡}d}|dr*|d}d|_d|_d|_|jjsNJ|jƒ‚|jj}td|f|jd�tdt f|jd�tdt j   d d ¡f|jd�|j rÄtd tj |j ¡df|jd�td t t ¡¡|jd�tt |¡|jd�td tt ƒ|jd�tdt jf|jd�t|jd�td|jd�td|jd�td|jd�td|jd�t|jd�td|jd�td|jd�td|jd�td|jd�td|jd�t|jd�tdt|dƒ|jd�tdt|dƒ|jd�tdt|dƒ|jd�tdt|dƒ|jd�tdt|dƒ|jd�t|jd�dS) NrJr™rrz# -*- coding: %s -*-rz!# Created by makepy.py version %sz# By python version %sÚ ú-z# From type library '%s'z# On %szmakepy_version =zpython_version = 0x%xz:import win32com.client.CLSIDToClass, pythoncom, pywintypeszimport win32com.client.utilzfrom pywintypes import IIDz$from win32com.client import DispatchzC# The following 3 lines may need tweaking for the particular serverz;# Candidates are pythoncom.Missing, .Empty and .ArgNotFoundz"defaultNamedOptArg=pythoncom.Emptyz%defaultNamedNotOptArg=pythoncom.Emptyz!defaultUnnamedArg=pythoncom.EmptyzCLSID = zMajorVersion = rqzMinorVersion = r_zLibraryFlags = rpzLCID = )r½Ú GetLibAttrrNrºr»r¼rrÛrÚmakepy_versionÚsysÚversionrgr¾ráÚpathÚsplitÚtimeÚctimerr�r0Ú hexversionrUÚhex)r+ÚlaÚ moduleDocÚdocDescrÛr r r Údo_gen_file_headerHsd  ÿþ ÿ þþ zGenerator.do_gen_file_headercCsN|j d¡}|j}d}|dr&|d}|j |¡|j d¡| ¡| ¡\}}}}|j dt|ƒt|ƒt|ƒ¡|rÜt d|d�t |  ¡ƒ}|  ¡d} |D]} | |   |¡7} |j ¡q¤| sÒt d |d�t |d�|jtk�rXd d „|  ¡Dƒ}|  ¡|D]} |j ¡|  |¡�qt |  ¡ƒ}|  ¡|D]} |j ¡|  |¡�q:n|j t|ƒt|ƒ¡t d |d�|  ¡D]f} | jtjk�rÀt d t| jdƒtt| jƒƒf|d�n(t dt| jdƒtt| jƒƒf|d��q„t d|d�t |d�|jtk�rÔt d|d�|  ¡D]4} | du�r"| j�r"t dt| jƒ| jf|d��q"t d|d�t d|d�t d|d�t d|d�t d|d�|  ¡D]} t d| j| jf|d��qœt d|d�t |d�n´t d|d�t d|d�|  ¡D]0} | du�rôt dt| jƒt| jƒf|d��qôt d|d�t d|d�t d|d�|  ¡D]} t d| j| jf|d��qRt d|d�t |d�t |d�i} |  ¡D](} | du�ržt| tƒ�sž| j| | j<�qž|  ¡D]} | j| | j<�qÐt d|d�|  ¡D]\}}t d||f|d��qøt d|d�t |d�|�r@t d|d�t |d�dS)NrJr™rú)Building definitions from type library...ú Generating...zclass constants:rrz passcSsg|]}|dur|‘qSr.r )rÚlr r r r£rz)Generator.do_generate..z RecordMap = {zE ###%s: %s, # Record disabled because it doesn't have a non-null GUIDz %s: %s,Ú}zCLSIDToClassMap = {z '%s' : %s,zCLSIDToPackageMap = {}zFwin32com.client.CLSIDToClass.RegisterCLSIDsFromDict( CLSIDToClassMap )zVTablesToPackageMap = {}zVTablesToClassMap = {z '%s' : '%s',zCLSIDToClassMap = {}zCLSIDToPackageMap = {zVTablesToClassMap = {}zVTablesToPackageMap = {zNamesToIIDMap = {z>win32com.client.constants.__dicts__.append(constants.__dict__))r½rNrr¿r®r°rürÙÚlenrrrBrdrjr²r§rêr?r;rZZIID_NULLr0r*rUrRrsÚ isinstancer£r)r+rúr"rûrÏr×rØrÐrZ num_writtenÚoleitemÚrecordrEÚmapr#Ziidr r r rë„sÎ   ÿ           ÿýþ      þ   þ         þ             þzGenerator.do_generatec# Csàt|_|j ¡}|d}|d}|d}|d}dt|ƒdd…d|||f|_�zxi}i} | ¡} d} | D]’} | \} }}}|tjkrp|  | ¡\}}t   |d¡|k} | sÞ|D]*\} }}}}}t   |d¡|kr²d} qÞq²| rp|||j <|  |||| ¡�qqp| �st| D]d} | \} }}}|tjtjfv�rt   |d¡|k�rd} | | ¡\}}|||<|du�r|| |<�q| �sˆJd |fƒ‚i}| ¡D]\}}|df||<�q”|  ¡D]>\}}| |d¡}|du�rà|d|f}nd|f}|||<�q´|j d t|ƒ¡| ¡D]²\}}|�p|} |j�r0Jd ƒ‚tj || j¡d }!d }"| |!¡|_zP|du�rj| |¡|du�r~| |¡|j ¡d}"W| |!|j|"¡d|_n| |!|j|"¡d|_0�qW|j  ¡n |j  ¡0dS)zRGenerate a single child. May force a few children to be built as we generate depsrrrqr_zwin32com.gen_py.rJz x%sx%sx%sNz@Cant find the '%s' interface in the CoClasses, or the interfacesrþzalready have a file?z.pyFT)!r¨r§r½rïrUr©rÃrZrÖrËrrhr;rÓrÌr�rÕrÚgetr¿r°rrBrráróÚjoinrsrßÚdo_gen_child_itemr²rçr¯)#r+ÚchildÚdirrùZlcidr;ÚmajorÚminorrÏrÐZinfosÚfoundrÅrÁrÂr*rKZ coClassItemrÆrÑrÈrÉrÇrÔrÒrr¢r–ÚexistingÚnew_valrZ vtableitemZan_itemZout_namerær r r Úgenerate_childþs¦  ÿ   ù ÿ þ  ÿÿþ          ÿzGenerator.generate_childcCsn|j d¡}d}|dr |d}|j |¡|j d¡| ¡| |¡|jrjtd|j |j f|j d�dS)NrJr™rrýz6win32com.client.CLSIDToClass.RegisterCLSID( "%s", %s )r) r½rNr¿r®r°rür?rRrr;rsr)r+rrúrûr r r ras     ÿýzGenerator.do_gen_child_itemcCs|jstd|jd�d|_dS)Nz-from win32com.client import DispatchBaseClassrr)rºrrr1r r r rŒqsz%Generator.checkWriteDispatchBaseClasscCs|jstd|jd�d|_dS)Nz,from win32com.client import CoClassBaseClassrr)r»rrr1r r r r¦vsz$Generator.checkWriteCoClassBaseClasscCs|js d|_dSr)r¼r1r r r r”{sz"Generator.checkWriteEventBaseClass)rN)rÚ)r)r3r4r5r:rÃrËrÓrÕrÙrßrçrÜrìrürërrrŒr¦r”r r r r r¹ts&ú  !(   <zcr¹Ú__main__zEThis is a worker module. Please use makepy to generate Python files.)/Ú__doc__rárñrõrZZwin32comr™rrãrðrêrér¨ZVT_I2ZVT_I4ZVT_R4ZVT_R8ZVT_BSTRZVT_BOOLZ VT_VARIANTZVT_I1ZVT_UI1ZVT_UI2ZVT_UI4ZVT_I8ZVT_UI8ZVT_INTZVT_DATEZVT_UINTrSr rrr&r'r9r6rGrHrVrkr}r£r¬r¹r3rr r r r Úsf ð  ->8=\