
    %
i                        d Z ddlZddlZddlZddlmZ ddlZddlmZm	Z	 dZ
dZdZd	Zi ej        d
ej        d
ej        dej        dej        dej        d
ej        dej        d
ej        d
ej        d
ej        d
ej        d
ej        d
ej        d
ej        dej        d
Zd Zd Z d Z!d Z" G d d          Z# G d dej$        e#          Z%d Z& G d dej$        e#          Z' G d dej$        e#          Z( G d dej)        e#          Z) G d dej*        e#          Z* G d  d!ej$        e#          Z+ G d" d#          Z, G d$ d%          Z-e.d&k    r e/d'           dS dS )(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)chain   )buildgencachez0.5.01fullzdemand(base)zdemand(child)intfloatstrtypezdatetime.datec                     g }| dd          D ]/}t          j        |          }| n|                    |           0t          |          S Nr   )r   MakeDefaultArgReprappendtuple)argsDescretdescdefaults       C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\win32com/client/genpy.pyMakeDefaultArgsForPropertyPutr   =   sY    
C  *400?E

7::    c                 Z    t          d |D                       }d| ||d d         |||fz  S )Nc                 "    g | ]}|d d         S )N    ).0whats     r   
<listcomp>z$MakeMapLineEntry.<locals>.<listcomp>I   s     4444d2A2h444r   z(%s, %d, %s, %s, "%s", %s)r   )r   )dispidwFlagsretTypeargTypesuserresultCLSIDs         r   MakeMapLineEntryr%   G   sJ    44844455H'+  r   c                 ,    | d d         dk    r| S d| z   S )Nr   Onr   )	eventNames    r   MakeEventMethodNamer)   T   s&    !}ir   c           	      p   t          d|           t          | j                                        | j                                        | j                                                  D ]<}|j        j        }t          d|t          |j	        d                   fz  |           =t          d|           d S )Nz	_dispid_to_func_ = {filez		%9d : "%s",r   z		})
printr   
propMapGetvalues
propMapPutmapFuncsr   memidr)   names)objstreamentryr2   s       r   WriteSinkEventMapr7   [   s    	
"0000  	
 	

 
 (;EKN(K(K LL	
 	
 	
 	
 	
 
'r   c                       e Zd Zd Zd ZdS )WritableItemc                 b    | j         |j         k    r| j        |j        k     S | j         |j         k     S N)orderdoc)selfothers     r   __lt__zWritableItem.__lt__m   s/    :$$8ei''zEK''r   c                 &    d| j         d| j         S )NzOleItem: doc=z, order=)r=   r<   r>   s    r   __repr__zWritableItem.__repr__r   s    ?tx??4:???r   N)__name__
__module____qualname__r@   rC   r   r   r   r9   r9   l   s7        ( ( (
@ @ @ @ @r   r9   c                   $    e Zd ZdZdZddZd ZdS )
RecordItem	   RECORDNr   c                 `    t           j                            | |           |d         | _        d S Nr   )r   OleItem__init__clsid)r>   typeInfotypeAttrr=   bForUsers        r   rN   zRecordItem.__init__z   s+     	tS)))a[


r   c                     d S r;   r   r>   	generators     r   
WriteClasszRecordItem.WriteClass       r   r   rD   rE   rF   r<   typenamerN   rV   r   r   r   rH   rH   v   sA        EH	! 	! 	! 	!    r   rH   c                     |                                 D ]B}| j        r9|j        r2|j        d         | j        d         k    r|                    ||           Cd S rL   )r/   r=   aliasDocWriteAliasItem)item
aliasItemsr5   aliass       r   WriteAliasesForItemr`      sh    ""$$ 5 58 	5 	5EN1,=!,L,L  V4445 5r   c                   $    e Zd ZdZdZddZd ZdS )	AliasItemr   ALIASNr   c                    t           j                            | |           |d         }|| _        t	          |t
                    rmt	          |d         t                    rR|d         }|                    |          }|                    d          | _	        |
                                | _        d S d | _	        d | _        d S )N   r   )r   rM   rN   attr
isinstancer   r   GetRefTypeInfoGetDocumentationr[   GetTypeAttr	aliasAttr)r>   typeinforg   r=   rR   aihrefalinfos           r   rN   zAliasItem.__init__   s    tS)))"X	b%   	"Z1s%;%; 	"a5D,,T22F"33B77DM#//11DNNN DM!DNNNr   c                    | j         rd S | j        rP| j        d         }||v r||                             ||           t          | j        d         dz   |z   |           n| j        d         }t          |t                    rp	 t          |         }t          d| j        d          d| |           n?# t          $ r2 t          | j        d         dz   t          |          z   |           Y nw xY wt          |           d| _         d S )	Nr   z = r+   re   z# =z# = None # Can't convert alias info r   )bWrittenr[   r\   r-   r=   rg   rh   r   mapVTToTypeStringKeyErrorr
   )r>   	aliasDictr5   depNamern   typeStrs         r   r\   zAliasItem.WriteAliasItem   sD   = 	F= 	mA&G)##'"11)VDDD$(1+%/f=====2B"c"" /3G6tx{66W66VDDDDD   &KKcRTggU#     
 	6s   /B4 49C0/C0r   )rD   rE   rF   r<   rY   rN   r\   r   r   r   rb   rb      sA        EH" " " "    r   rb   c                   $    e Zd ZdZdZddZd ZdS )EnumerationItemr   ENUMERATIONNc                    t           j                            | |           |d         | _        i | _        |d         }|t
          j        z  p|t
          j        z  | _        t          |d                   D ]T}|
                    |          }|                    |d                   d         }t          j        |          | j        |<   Ud S )Nr         )r   rM   rN   rO   mapVars	pythoncomTYPEFLAG_FHIDDENTYPEFLAG_FRESTRICTEDhiddenrange
GetVarDescGetNamesMapEntry)	r>   rm   rg   r=   rR   	typeFlagsjvdescnames	            r   rN   zEnumerationItem.__init__   s    tS)))!W
H		22 :999 	
 tAw 	7 	7A''**E$$U1X..q1D!&!6!6DL	7 	7r   c           	         d}| j         d         }t          | j                  D ]}| j        |         }|j        }|d         t          j        k    r|d         }t          |          }	 t          |dd           n,# t          $ r |	                    dd          }d| d}Y nw xY wt          d	t          j        |d
          dd|dd||           |dz  }|S )Nr      r   z<makepy>eval"'z7" # This VARIANT type cannot be converted automatically	T30rr   10z # from enum r+   )r=   sortedr   r   r   	VAR_CONSTreprcompileSyntaxErrorreplacer-   r   MakePublicAttributeName)	r>   r5   numenumNamer   r6   r   valuses	            r   WriteEnumerationItemsz%EnumerationItem.WriteEnumerationItems   s   8A;4<(( 	 	DL&EJEQx9...Ah3iiCV4444"    ++c3//CXCXXX CC	 4T4@@@@@####xxQ   
 q
s   (A::&B#"B#r   )rD   rE   rF   r<   rY   rN   r   r   r   r   rz   rz      sA        EH7 7 7 7*    r   rz   c                       e Zd ZdZd Zd ZdS )
VTableItemr   c                 >    |                      |           d| _        d S r   )WriteVTableMaprs   rT   s     r   rV   zVTableItem.WriteClass   s!    I&&&r   c           
      |   |j         }t          d| j        | j        fz  |           t          | j         d|           | j        D ]Q}|\  }}}|j        t          j        k    sJ g }d}t          dd|           |D ]B}	t          t          |	          dd|           |d	z  }|d
z  dk    rt          dd|           Ct          d||j	        |j
        fz  d|           |j        D ]}
|d	z  }|d
z  dk    rt          dd|           t          j        |
          }|
d         d }nt          |
d                   }t          t          |
d         |
d	         ||f          dd|           t          dd|           t          t          |j                  dd|           t          t          |j                  dd|           t          t          |j                  dd|           t          t          |j                  dd|           t          t          |j                  dd|           t          t          |j                  dd|           t          t          |j                  dd|           t          d|           St          d|           t          |           d S )Nz%s_vtables_dispatch_ = %dr+   z_vtables_ = [r   z	(( )endr,   ,r      z
			z), %d, (%r, %r, [   z],z)),])r,   r-   python_namebIsDispatchvtableFuncsdesckindr   DESCKIND_FUNCDESCr   r2   
scodeArrayargsr   r   funckindinvkindcallconv
cParamsOptoVftrettype
wFuncFlags)r>   rU   r5   vr3   r   r   	arg_reprsitem_numr   argdefval	arg3_reprs                r   r   zVTableItem.WriteVTableMap   s   '4+;T=M*NN	
 	
 	
 	
 	!000v>>>>! %	& %	&A"#E64=I$?????IH&c//// < <d4jj#3V<<<<Aa<1$$*#F;;;;#vtz4?&KK   
 y  Aa<1$$*#F;;;;1#66q6> $II $SVI#a&#a&&)<==sRX     $Cf----$t}%%s&AAAA$t|$$cs@@@@$t}%%s&AAAA$t''#FCCCC$ty//3Cf====$t|$$cs@@@@$t''#FCCCC%f%%%%%c6r   N)rD   rE   rF   r<   rV   r   r   r   r   r   r      s7        E  . . . . .r   r   c                   8    e Zd ZdZd	dZd Zd Zd Zd Zd Z	dS )
DispatchItemr   Nc                 f    t           j                            | |||           || _        d | _        d S r;   )r   r   rN   	type_attrcoclass_clsid)r>   rm   rg   r=   s       r   rN   zDispatchItem.__init__1  s4    ##D(D#>>>!r   c                 <   | j         s| j        j        t          j        k    sd S | j        r+|                     |           |                     |           n*|                     |           | 	                    |           t          |j                   d| _        d S )Nr+   r   )r   r   typekindr   TKIND_DISPATCHbIsSinkWriteEventSinkClassHeaderWriteCallbackClassBodyWriteClassHeaderWriteClassBodyr-   r,   rs   rT   s     r   rV   zDispatchItem.WriteClass6  s     	N+y/GGGF < 	+**9555''	2222!!),,,	***9>""""r   c                 6   |                                  | j        }|j        }t          d| j        z   dz   |           |d         r,t          dt          j        |d                   z   |           	 t          j        | j	                  }t          d|z  |           n# t          j
        $ r Y nw xY wt          d| j	        |           | j        t          d|           nt          d	| j        |           t          |           d| _        d S )
Nclass z(DispatchBaseClass):r+   r   r   +	# This class is creatable by the name '%s'		CLSID = 	coclass_clsid = None	coclass_clsid = )checkWriteDispatchBaseClassr=   r,   r-   r   r   _makeDocStringr   ProgIDFromCLSIDrO   	com_errorr   rs   r>   rU   r=   r5   progIds        r   r   zDispatchItem.WriteClassHeaderG  sS   --///hh)),BBPPPPq6 	D$-c!f555FCCCC	.tz::F>&IPV     " 	 	 	D	)4:))7777%*88888=t'9==FKKKK6   4-B" "B43B4c                    |                                  | j        }|j        }t          d| j        z   dz   |           |d         r,t          dt          j        |d                   z   |           	 t          j        | j	                  }t          d|z  |           n# t          j
        $ r Y nw xY wt          d| j	        |           | j        t          d|           nt          d	| j        |           t          d
|           t          | |           t          |           t          d|           t          d|           t          d|           t          d|           t          d|           t          d|           t          d|           t          d|           t          d|           t          d|           t          d|           t          d|           t          d|           t          d|           t          d|           t          d|           t          d|           t          d|           t          d|           t          d|           t          d|           t          d |           t          |           d| _        d S )!Nr   :r+   r   r   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=   r,   r-   r   r   r   r   r   rO   r   r   r7   rs   r   s        r   r   z&DispatchItem.WriteEventSinkClassHeader]  ss   **,,,hh))C/f====q6 	D$-c!f555FCCCC	.tz::F>&IPV     " 	 	 	D	6
66VDDDD%*88888=t'9==FKKKK@vNNNN$'''62@@@@$62222(v6666k''''1????IPV	
 	
 	
 	
 	]	
 	
 	
 	
 	AOOOOc	
 	
 	
 	
 	@vNNNN$62222jv&&&&"0000/f====l(((("0000/f====g	
 	
 	
 	
 	)77773&AAAA/f====Q	
 	
 	
 	
 	6r   c                 z   |j         }t          d|           t          d|           t          | j                                        | j                                        | j                                                  D ]}|j        }t          |j	        d                   }t          d|z   dz   t          j        ||j	        ddd	d
d          z   dz   |           |j        r>|j        d         r1t          dt          j        |j        d                   z   |           t          |           d| _        d S )Nz	# Event Handlersr+   zE	# If you create handlers, they should have the following prototypes:r   z#	def z(selfdefaultNamedOptArgdefaultNamedNotOptArgdefaultUnnamedArgzpythoncom.MissingT)
is_commentz):r   z#		)r,   r-   r   r.   r/   r0   r1   r   r)   r3   r   BuildCallListr=   r   rs   )r>   rU   r5   r6   fdescmethNames         r   r   z#DispatchItem.WriteCallbackClassBody  sq   "0000T	
 	
 	
 	
 O""$$do&<&<&>&>@T@T@V@V
 
 	Q 	QE JE*5;q>::H %K(+''#         y QUYq\ Qg 4UYq\ B BBPPPP6r   c           
      *   |j         }d d d d d}t          | j                  D ]}| j        |         }|j        j        t
          j        k    sJ |j        j        }|j        j        t
          j	        z  r|t
          j
        k    rb|j        j        t
          j        k    r}|t
          j        k    rd}n7|t
          j
        k    r||j        j        d f|d<   |                                }||v r||         ||j        j        d f||<   |j        s|j        s|                                r&t'          d|                                z   |           |j        rt'          d|z  |           |                     |t-          j        |                    }|D ]}	t'          |	|           t'          d|           t          | j                  D ]J}
| j        |
         }|j        s|j        s+|                                }|rt'          d|
 d	| d
|           |
                                }|j        }|d         }d}t3          |j        t
          j        |||
|                                          }|j        t
          j        k    rd}n,|j        t
          j
        k    rd}n|
                                }||v r1||         )|t
          j        |f||<   |j        t
          j
        k    r t'          dt-          j        |
           d| d|           Lt          | j                  D ]}
| j        |
         }|j        s|j        sf|                                r7t'          d                    |
|                                          |           |j        }|j        t
          j        k    sJ |
                                }|d         }|d         }t3          |d         t
          j        |||
|                                          }|j        t
          j        k    rd}n,|j        t
          j
        k    rd}n|
                                }||v r1||         )|t
          j        |f||<   |j        t
          j
        k    r[t'          dt-          j        |
           d| d|           t'          d|           t'          d|           t          | j                  D ]}
| j        |
         }|j        s|j        sy|
                                }|j        }t-          j        |d                   }|d}n|dz  }t'          dt-          j        |
          |d         t
          j        |fz  |           t          | j                   D ]o}
| j         |
         }|j        s|j        sR|j        }tC          |d                   }t'          dt-          j        |
          |d         |d         |fz  |           pt'          d|           |d         r|d         \  }}}|d}|                     |d          }nd}d|z  g}t'          d| d|j"        d          d
|           |D ]}	t'          |	|           t'          d|           t'          d |           t'          d!|           t'          d"|           |d         rI|d         \  }}}|j        j        t
          j        k    sJ |j        j        }|                                }nt
          j#        t
          j        z  }d#}|d#k    r(d$| j        v r| j        d$                                         }t'          d%|           t'          d&|           t'          d'|           t'          d(t
          j
        |fz  |           t'          d)|           t'          d*|           t'          d+|z  |           |d,         r|d,         \  }}}|                                }t'          d-|           t'          d.|           t'          d/|           t'          d0|           t'          d1|j        j        ||fz  |           |d2         r|d2         \  }}}|d}|                     |d3          }nd}d4|z  g}t'          d5|z  |           |D ]}	t'          |	|           t'          d6|           t'          d7|           t'          d8|           d S d S )9N)countr]   value_newenumr   r   z	# Result is of type r+   ze	# The method %s is actually a property, but must be used as a method to correctly pass the argumentsz	_prop_map_get_ = {z		# Property 'z' is an object of type 'r   r   r   z		"z": r   z+		# Method '{}' returns object of type '{}'   r   z	}z	_prop_map_put_ = { z"		"%s" : ((%s, LCID, %d, 0),(%s)),z		"%s": ((%s, LCID, %d, 0),%s),r   method__call__propertyz4	def __call__(self):
		return self._ApplyTypes_(*%s)z	# Default z for this class is 'z	def __str__(self, *args):z"		return str(self.__call__(*args))z	def __int__(self, *args):z"		return int(self.__call__(*args))NoneItemz	def __iter__(self):z,		"Return a Python iterator for this object"r   z9			ob = self._oleobj_.InvokeTypes(%d,LCID,%d,(13, 10),())z		except pythoncom.error:z>			raise TypeError("This object does not support enumeration")z.		return win32com.client.util.Iterator(ob, %s)r]   z^	#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 __bool__(self):z		return True)$r,   r   r1   r   r   r   r   r2   r   FUNCFLAG_FRESTRICTEDDISPID_NEWENUMr   FUNC_DISPATCHDISPID_VALUEr   lowerbBuildHiddenr   GetResultNamer-   wasPropertyMakeFuncMethodr   r   propMapr%   DISPATCH_PROPERTYGETGetResultCLSIDStrr.   formatr   DISPATCH_PROPERTYPUTr0   r   r3   DISPATCH_METHOD)r>   rU   r5   specialItemsr   r6   r   lkeyr   linekey
resultNamedetails
resultDescargDescmapEntry
defArgDesc
invoketypepropArgsrY   	enumEntryr   r$   s                          r   r   zDispatchItem.WriteClassBody  s   	
 
 4=)) %	- %	-DM$'E:&)*EEEEE Z%F
%	(FFi666z"i&===///9333,15:3Et+LZ(zz||$$d);)C&+UZ-?%FT"% -U\ -&&(( Y2U5H5H5J5JJQWXXXX$  A#   
 ))%1Nt1T1TUU - -D$V,,,,,$62222$,'' ,	 ,	CL%E% *U\ *"0022
 U3UU
UUU#    yy{{*$QZ
+M2++--  =I$:::"DD]i&>>>%DD99;;DL((\$-?-G !6 *L& }	(@@@ NE9#>>NN8NNN    $/** ,	 ,	COC(E% *U\ *&&(( GNN!4!4!6!6  $	     *'9+FFFFFyy{{!!*$QZ
+AJ2++--  =I$:::"DD]i&>>>%DD99;;DL((\$-?-G !6 *L& }	(@@@ NE9#>>NN8NNN   
 	e&!!!!$62222$,'' 	 	CL%E% U\ yy{{*"5gajAA
%!#JJ#%J:5c::
!6"	  	 	 	 	 $/** 	 	COC(E% U\ *:71:FF
75c::

"	  	 	 	 	 	e&!!!!  	G*6w*?'E:x#))%<<%N NxNNU[^NNN     ) )d(((((/f====8vFFFF/f====8vFFFF 
# 		!.::.F+Iz8>*i.IIIIIn,G $5577KK/)2PPG K&  Vt}%<%<-/AACCK%F3333>VLLLLjv&&&&J'12	
 	
 	
 	

 	+&9999O	
 	
 	
 	

 	>L	
 	
 	
 	

  	*6v*>'E:x1133Kq    d    R    1????n:#Z=>      	2*6w*?'E:x#))%;;%MPXX N   
  ) )d(((((c    )7777#&111111/	2 	2r   r;   )
rD   rE   rF   r<   rN   rV   r   r   r   r   r   r   r   r   r   .  s        E" " " "
  "  ,; ; ;z  B]2 ]2 ]2 ]2 ]2r   r   c                   ,    e Zd ZdZdZdg g dfdZd ZdS )CoClassItemr   COCLASSNr   c                     t           j                            | |           |d         | _        || _        || _        d| _        d S )Nr   r   )r   rM   rN   rO   sources
interfacesr   )r>   rm   rg   r=   r  r  rR   s          r   rN   zCoClassItem.__init__  sA    tS)))!W
$r   c           	         |                                  | j        }|j        }|j        t          k    rg }| j        D ]\  }}|                    |           | j        D ]\  }}|                    |           t          d|           |D ]f}t          d|j	         d|j
         d|           t          d                    |j
        |j	        |j
        |j
                  |           d|_        g	 t          j        | j                  }t          d|z  |           n# t          j        $ r Y nw xY wt          d	| j
        z  |           |r"|d         rt          d
|d         z   |           t          d| j        |           t          d|           d }| j        D ]E\  }	}|t          j        z  r|	}|	j        r|	j
        }
nd|	j         d}
t          d|
 d|           Ft          d|           |r.|j        r|j
        }nd|j         d}t          d| |           t          d|           d }| j        D ]E\  }	}|t          j        z  r|	}|	j        r|	j
        }
nd|	j         d}
t          d|
 d|           Ft          d|           |r.|j        r|j
        }nd|j         d}t          d| |           d| _        t          |           d S )Nz
import sysr+   z__import__('.z')z{} = sys.modules['{}.{}'].{}r   z(# This CoClass is known by the name '%s'z'class %s(CoClassBaseClass): # A CoClassz	# r   z	coclass_sources = [r   z		r   z	]z	default_source = z	coclass_interfaces = [z	default_interface = )checkWriteCoClassBaseClassr=   r,   generate_typeGEN_DEMAND_CHILDr  r   r  r-   base_mod_namer   r   rs   r   r   rO   r   IMPLTYPEFLAG_FDEFAULT)r>   rU   r=   r5   referenced_itemsrefflagr   defItemr]   r  defNames               r   rV   zCoClassItem.WriteClass  s   ,,...h"&666!!\ - -	T '',,,,!_ - -	T '',,,,,V,,,,' ! !P9#:PPS_PPP    299!/	        !	.tz::F<GfUUUUU" 	 	 	D	59IJQW	
 	
 	
 	
  	03q6 	0&3q6/////)4:))7777%F3333, 		. 		.JD$i55  } (&'$*'''----f-----e&!!!! 	@ /!-.gm...111????(v6666/ 	. 	.JD$i55 } (&'$*'''----f-----e&!!!! 	C /!-.gm...47446BBBB6s   4-D" "D43D4rX   r   r   r   r  r    sP        EH+/UV    M M M M Mr   r  c                   H    e Zd Zd Zd Zd ZddZddZd Zd Z	d	 Z
d
 ZdS )GeneratorProgressc                     d S r;   r   rB   s    r   rN   zGeneratorProgress.__init__7  rW   r   c                     || _         dS )zCalled when the process starts.N)tlb_desc)r>   r#  s     r   StartingzGeneratorProgress.Starting:  s     r   c                     dS )z$Called when the process is complete.Nr   rB   s    r   FinishedzGeneratorProgress.Finished>        r   Nc                     dS )zyWe are entering a major step.  If maxticks, then this
        is how many ticks we expect to make until finished
        Nr   )r>   r   maxtickss      r   SetDescriptionz GeneratorProgress.SetDescriptionA  r'  r   c                     dS )z>Minor progress step.  Can provide new description if necessaryNr   r>   r   s     r   TickzGeneratorProgress.TickF  r'  r   c                     dS )zVerbose/Debugging output.Nr   r,  s     r   VerboseProgressz!GeneratorProgress.VerboseProgressI  r'  r   c                     dS )zIf a warning is generatedNr   r,  s     r   
LogWarningzGeneratorProgress.LogWarningL  r'  r   c                     d S r;   r   r>   filenames     r   LogBeginGeneratez"GeneratorProgress.LogBeginGenerateO  rW   r   c                     d S r;   r   rB   s    r   ClosezGeneratorProgress.CloseR  rW   r   r;   )rD   rE   rF   rN   r$  r&  r*  r-  r/  r1  r5  r7  r   r   r   r   r   6  s          ! ! !3 3 3   
M M M M( ( (( ( (      r   r   c                   |    e Zd Z	 ddZd Zd Zd Zd Zd Zdd	Z	d
 Z
d ZddZd Zd Zd Zd Zd Zd Zd ZdS )	Generatorr   c                 v    d| _         d| _        d| _        || _        || _        || _        || _        d | _        d S rL   )bHaveWrittenDispatchBaseClassbHaveWrittenCoClassBaseClassbHaveWrittenEventBaseClasstypelibsourceFilenamer   progressr,   )r>   r>  r?  progressObjectr   s        r   rN   zGenerator.__init__W  sE     ./*,-)*+',(&			r   c                 R   g }t          | j                                                  D ]}}| j                            |          }| j                            |          }| j                            |          }|                                }|                    ||||f           ~|S r;   )r   r>  GetTypeInfoCountGetTypeInfoGetTypeInfoTyperj   rk   r   )r>   r   iinfoinfotyper=   rg   s          r   CollectOleItemInfosFromTypez%Generator.CollectOleItemInfosFromTypeh  s    t|446677 	4 	4A<++A..D|33A66H,//22C##%%DJJhT23333
r   c           	         |\  }}}}g }t          |d                   D ]}|                    |          }	 |                    |                    |                    }	n# t          j        $ r Y Rw xY w|	                                }
|                    ||
j        |	|		                    d          |
|f           t          |||          }||fS )Nr   rf   )r   GetImplTypeFlagsri   GetRefTypeOfImplTyper   r   rk   r   r   rj   r  )r>   type_info_tuplerG  rH  r=   rg   child_infosr   flagsrefTyperefAttrnewItems               r   _Build_CoClasszGenerator._Build_CoClassr  s   $3!hTtAw 	 	A))!,,E--d.G.G.J.JKK&    ))++G$,,R00	 	 	 	 dD#..##s   (A  A21A2c                 ,   i }i }|D ]?\  }}}	}
}}|j         t          j        k    s+|j         t          j        k    r
|d         t          j        z  r|d         }||v r	||         }nt          |	||
          }|||j        <   |j        |_        |t          j        z  rd|_	        ||f||j        <   n||f||j        <   ||vr|d         t          j
        z  rq|	                    |	                    d                    }	|	                                }|j         t          j        k    s
J d            t          |	||
          }|||<   At          |                                          |_        t          |                                          |_        d S )Nr}   r   r   rf   zmust be interface bynow!)r   r   r   TKIND_INTERFACETYPEFLAG_FDISPATCHABLEr   rO   r   IMPLTYPEFLAG_FSOURCEr   TYPEFLAG_FDUALri   rL  rk   r   listr/   r  r  )r>   coclasscoclass_infooleItemsvtableItemsr  r  rG  	info_typerP  r=   rQ  rO  rO   dispItem
vtableItems                   r   _Build_CoClassChildrenz Generator._Build_CoClassChildren  s   
=I 	4 	49D)Wc7E9#;;; I$===BK)"BB >  
H$$'HH+GWcBBH/7HX^,)0&999 C'(H$/7.?GHN++2:E1BJx~.++i>V0V+%44W5Q5QRT5U5UVVG%1133G"+y/HHHH2 IHH ",GWc!B!BJ)3K&w~~//00!*"3"3"5"566r   c                    |\  }}}}d x}}|t           j        k    s%|t           j        k    r|d         t           j        z  rrt	          |||          }|j        t           j        z  rK|                    d          }|                    |          }|	                                }t           j        }nd }|d t           j        fv s
J d            |t           j        k    rt          |||          }||fS )Nr}   rf   z&Must be a real interface at this point)r   r   rU  rV  r   
wTypeFlagsrX  rL  ri   rk   r   )	r>   rM  rG  rH  r=   rg   oleItemr`  refhtypes	            r   _Build_InterfacezGenerator._Build_Interface  s   $3!hT##*y///	111R9;; 2 #4s33G!99  44R88**844''))$4%
 
 
 
 4
 
 
 y000#D$44J
""r   c                    | j         s
J d            i }i }i }i }|                                 D ]M}|\  }}}}	|	d         }
|t          j        k    s|t          j        k    r"t          ||	|          }|||j        d         <   T|t          j        t          j        fv r)|
|vr$| 	                    |          \  }}|||
<   ||||
<   |t          j
        k    s|t          j        k    rt          ||	|          }|||j        <   |t          j        k    r|t          j        k    r<|                     |          \  }}|                     ||||           |||j        <   0| j                            d|z             O||||fS )NzOThis code doesn't look at the hidden flag - I thought everyone set it true!?!?!r   zUnknown TKIND found: %d)r   rI  r   
TKIND_ENUMTKIND_MODULErz   r=   r   rU  rf  TKIND_RECORDTKIND_UNIONrH   rO   TKIND_ALIASTKIND_COCLASSrS  ra  r@  r1  )r>   r\  	enumItemsrecordItemsr]  rM  rG  rH  r=   rg   rO   rR  rd  r`  rN  s                  r   BuildOleItemsFromTypezGenerator.BuildOleItemsFromType  s     	
 	
]	
 	
  	#??AA 	O 	OO(7%D(CGE9///8y?U3U3U)$c::,3	'+a.)) i6	8QRRR((*.*?*?*P*P'GZ&-HUO!--7E*I222h)BW6W6W$T455-4GM**Y222Y444'+':':?'K'K$++G[(KXXX*1''(()BX)MNNNNK<<r   utf-8c                 P    |                      |          }t          |d|          S )Nwt)encoding)get_temp_filenameopen)r>   r4  rt  temp_filenames       r   open_writerzGenerator.open_writer  s,     ..x88M4(;;;;r   c                     |                                  |                     |          }|rt          j        ||           d S 	 t          j        |           t          j        |           d S # t
          $ r Y d S w xY wr;   )closeru  osr   unlinkOSError)r>   r4  fworkedrw  s        r   finish_writerzGenerator.finish_writer  s    				..x88 	J}h/////	(###	-(((((   s   (A. .
A<;A<c                 2    d|t          j                    fz  S )Nz
%s.%d.temp)r{  getpidr3  s     r   ru  zGenerator.get_temp_filename  s    x555r   r   c                     |rt           | _        nt          | _        || _        |                                  d | _        | j                                         d S r;   )GEN_DEMAND_BASEr  GEN_FULLr,   do_generater@  r&  )r>   r,   is_for_demands      r   generatezGenerator.generate
  sW     	*!0D!)D		     r   c                 h   | j                                         }| j                             d          }d}|d         r|d         }d| _        d| _        d| _        | j        j        sJ | j                    | j        j        }t          d| d| j                   t          dt           | j                   t          d	
                    t          j                            d
d                    | j                   | j        rBt          dt          j                            | j                  d          d| j                   t          dt%          j        t%          j                              z  | j                   t          t)          j        |          | j                   t          dt          | j                   t          dt          j        d| j                   t          | j                   t          d| j                   t          d| j                   t          d| j                   t          d| j                   t          | j                   t          d| j                   t          d| j                   t          d| j                   t          d| j                   t          d| j                   t          | j                   t          d|d         | j                   t          d|d          | j                   t          d|d          | j                   t          d |d!          | j                   t          d"t/          |d                   z   | j                   t          | j                   d S )#Nrf   r   r   r   z# -*- coding: z -*-r+   z# Created by makepy.py version z# By python version {}
-z# From type library 'r   z# On %szmakepy_version = zpython_version = 0xxz:import win32com.client.CLSIDToClass, pythoncom, pywintypeszimport win32com.client.utilzfrom 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.EmptyzCLSID = zMajorVersion = r   zMinorVersion = r   zLibraryFlags = r   zLCID = )r>  
GetLibAttrrj   r;  r<  r=  r,   rt  r-   makepy_versionr   sysversionr   r?  r{  pathsplittimectimer   r   
hexversionhex)r>   la	moduleDocdocDescrt  s        r   do_gen_file_headerzGenerator.do_gen_file_header  s   \$$&&L11"55	Q< 	#lG ./*,-)*+' y!,,49,,!9%-x---DI>>>>@@@tyQQQQ$++CK,?,?c,J,JKK	
 	
 	
 	
  	Pd6I(J(J1(MPPPY    	i$*TY[[111	BBBBe"7++$)<<<<4.4449EEEE6CN666TYGGGG49Hty	
 	
 	
 	
 	+$)<<<<*;;;;449EEEE49Q	
 	
 	
 	
 	I	
 	
 	
 	
 	2CCCC5DIFFFF1	BBBB49"A""3333'1''di8888'1''di8888'1''di8888i#be**$49555549r   c                     | j                             d          }| j        }d}|d         r|d         }| j                            |           | j                            d           |                                  |                                 \  }}}}| j                            dt          |          t          |          z   t          |          z              |rt          d|           d}t          |                                          D ]3}	||	                    |          z  }| j                                         4|st          d	|           t          |           | j        t          k    rt          t!          d |                                                    D ]0}	| j                                         |	                    |            1t          |                                          D ]0}	| j                                         |	                    |            1n7| j                            t          |          t          |          z              t          d
|           |                                D ]Y}
|
j        d         d|
j         d}|
j        t(          j        k    rt          d| d|           Et          d| |           Zt          d|           t          |           | j        t          k    rt          d|           |                                D ]-}|)|j        r"t          d|j         d|j         d|           .t          d|           t          d|           t          d|           t          d|           t          d|           |                                D ]$}t          d|j         d|j         d|           %t          d|           t          |           nt          d|           t          d|           |                                D ]&}|"t          d|j         d|j        d|           't          d|           t          d|           t          d|           |                                D ]$}t          d|j         d|j         d|           %t          d|           t          |           t          |           i }|                                D ](}|$t1          |t2                    s|j        ||j        <   )|                                D ]}|j        ||j        <   t          d|           |                                D ]\  }}t          d| d| d|           t          d|           t          |           |rt          d|           t          |           d S ) Nrf   r   r   )Building definitions from type library...Generating...zclass constants:r+   r   z	passzRecordMap = {z: 'z',z	###z9# Record disabled because it doesn't have a non-null GUIDr   }zCLSIDToClassMap = {z	'z' : r   zCLSIDToPackageMap = {}zFwin32com.client.CLSIDToClass.RegisterCLSIDsFromDict( CLSIDToClassMap )zVTablesToPackageMap = {}zVTablesToClassMap = {z' : 'zCLSIDToClassMap = {}zCLSIDToPackageMap = {zVTablesToClassMap = {}zVTablesToPackageMap = {zNamesToIIDMap = {z>win32com.client.constants.__dicts__.append(constants.__dict__))r>  rj   r,   r@  r$  r*  r  rp  lenr-   r   r/   r   r-  r  r  filterrV   r=   rO   r   IID_NULLrs   r   rh   r  items)r>   r  r5   r  r\  rn  ro  r]  num_writtenoleitemrecord
record_strr]   mapr   iids                   r   r  zGenerator.do_generateQ  s   L11"55	Q< 	#lGw'''$$%PQQQ!!!8<8R8R8T8T5)[+$$S]]S^^;c+>N>NN	
 	
 	

  	$62222K!)"2"2"4"455 % %w<<VDDD""$$$$ -hV,,,,v))!&x/@/@"A"ABB ) )""$$$""4((((!+"4"4"6"677 ) )""$$$""4(((() Ms8}}s;/?/??@@@oF++++!((** 		6 		6F"JqM@@@@@J|y111(J((O     ':''f55555c6 ))'f5555 ))  ##AdjAAd.>AAA#    #F####*8888X    ,6::::)7777#**,, P PADJAAT-=AAAOOOOO#F####v (v6666)7777 ))  #CdjCCd.>CCC#    #F####*8888+&9999#**,, P PADJAAT-=AAAOOOOO#F####v6OO%% 	3 	3D
4(E(E(,
D$%&&(( 	/ 	/D$(JC !!!//// 	9 	9ID#***3***88888c6 	P    	6r   c           	      2   t           | _        | j                                        }|d         }|d         }|d         }|d         }dt	          |          dd         z   d| d| d| z   | _        	 i }i }	|                                 }
d}|
D ]}|\  }}}}|t          j        k    r| 	                    |          \  }}t          j        |d                   |k    }|s.|D ]+\  }}}}}}t          j        |d                   |k    rd} n,|r$|||j        <   |                     ||||	            n|sj|
D ]g}|\  }}}}|t          j        t          j        fv rDt          j        |d                   |k    r&d}|                     |          \  }}|||<   |||	|<   h|sJ d	| d
            i }|                                D ]\  }}|df||<   |	                                D ]1\  }}|                    |d          }||d         |f}nd|f}|||<   2| j                            dt+          |                     |                                D ]\  }}|p|} | j        r
J d            t0          j                            || j                  dz   }!d}"|                     |!          | _        	 ||                     |           ||                     |           | j                                         d}"t?          j         | j        !                    d          d                   5  | "                    |!| j        |"           ddd           n# 1 swxY w Y   d| _        # t?          j         | j        !                    d          d                   5  | "                    |!| j        |"           ddd           n# 1 swxY w Y   d| _        w xY w	 | j        #                                 dS # | j        #                                 w xY w)zRGenerate a single child.  May force a few children to be built as we generate depsr   r   r   r   zwin32com.gen_py.rf   r  NzCan't find the 'z/' interface in the CoClasses, or the interfacesr  zalready have a file?z.pyFTr  )$r  r  r>  r  r
   r  rI  r   rm  rS  r   r   rO   ra  rU  r   rf  r  getr@  r*  r  r/   r,   r{  r  joinr   rx  do_gen_child_itemr-  r   ModuleMutexr  r  r&  )#r>   childdirr  lcidrO   majorminorr\  r]  infosfoundrM  rG  rH  r=   rg   coClassItemrN  r^  rP  rQ  rO  rd  r`  r  r  r   existingnew_valr  
vtableiteman_itemout_namer  s#                                      r   generate_childzGenerator.generate_child  sv   -\$$&&!u111UAbD!114N4N4Nu4N4Nu4N4NN 	T	%
 HK4466EE#(  ,;)hTy666/3/B/B?/S/S,K!9#a&AAUJE  & )
& 
&  %##!$<SVDDMM() %  N  6A!2333'h    @', @ @O0?-D(C!1!0$   !8Q@@EII$%E262G2G2X2X/GZ.5HUO)55?E 2  Y5YYY 5 E&nn.. + +
U#T]c

)//11 % %
U 99S$//'&qk50GG"EkG$c

M((#e**EEE',||~~ % %#!/Z9<<&<<<} 7<<W-@AAEI ,,X66	
%*..w777!-..z:::M&&(((!F!-d.@.F.Fs.K.KB.OPP H H**8TYGGGH H H H H H H H H H H H H H H $DII "-d.@.F.Fs.K.KB.OPP H H**8TYGGGH H H H H H H H H H H H H H H $DI$$$$%%( M""$$$$$DM""$$$$sn   2IO; 5A	M->2O; 0MO; M	O;  M	!O; -3O O		=O	OOOOO; ;Pc                    | j                             d          }d}|d         r|d         }| j                            |           | j                            d           |                                  |                    |            |j        r6t          d	                    |j
        |j                  | j                   d S d S )Nrf   r   r   r  z6win32com.client.CLSIDToClass.RegisterCLSID( "{}", {} )r+   )r>  rj   r@  r$  r*  r  rV   rs   r-   r   rO   r   r,   )r>   r  r  r  s       r   r  zGenerator.do_gen_child_item%  s    L11"55	Q< 	#lGw'''$$%PQQQ!!!4    	HOOM7#6  Y	     	 	r   c                 R    | j         st          d| j                   d| _         d S d S )Nz-from win32com.client import DispatchBaseClassr+   r   )r;  r-   r,   rB   s    r   r   z%Generator.checkWriteDispatchBaseClass6  s;    1 	3A	RRRR12D...	3 	3r   c                 R    | j         st          d| j                   d| _         d S d S )Nz,from win32com.client import CoClassBaseClassr+   r   )r<  r-   r,   rB   s    r   r  z$Generator.checkWriteCoClassBaseClass;  s;    0 	2@tyQQQQ01D---	2 	2r   c                 &    | j         s	d| _         d S d S r   )r=  rB   s    r   r   z"Generator.checkWriteEventBaseClass@  s%    . 	0./D+++	0 	0r   N)r   )rq  )r   )rD   rE   rF   rN   rI  rS  ra  rf  rp  rx  r  ru  r  r  r  r  r  r   r  r   r   r   r   r9  r9  V  s2           "  $ $ $67 7 7B# # #2&= &= &=P
< 
< 
< 
<
 
 
6 6 6! ! ! !; ; ;zp p pd`% `% `%D  "3 3 3
2 2 2
0 0 0 0 0r   r9  __main__zEThis is a worker module.  Please use makepy to generate Python files.)0__doc__r{  r  r  	itertoolsr   r   r   r   r   r  r  r  r  VT_I2VT_I4VT_R4VT_R8VT_BSTRVT_BOOL
VT_VARIANTVT_I1VT_UI1VT_UI2VT_UI4VT_I8VT_UI8VT_INTVT_DATEVT_UINTrt   r   r%   r)   r7   r9   rM   rH   r`   rb   rz   r   r   r  r   r9  rD   r-   r   r   r   <module>r     s    
			 



                    " OUOU OW OW	
 u u & OU e e e OU e e   u! 4  
 
 
          "@ @ @ @ @ @ @ @       *5 5 5) ) ) ) )| ) ) )X6 6 6 6 6em\ 6 6 6r5 5 5 5 5!< 5 5 5pj2 j2 j2 j2 j25%| j2 j2 j2ZX X X X X%- X X Xv       @n0 n0 n0 n0 n0 n0 n0 n0b z	E
QRRRRR r   