
    %
ijr                        d Z ddlZddlZddlZddlmZ ddlmZ ddlZddl	Z	ddl
mZ eZ G d de          ZdZej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej         ej!        ej        ej"        ej#        ej$        ej%        ej&        ej'        ej(        gZ) e*e)          Z+ G d	 d
          Z, G d d          Z- G d de-          Z. G d de.          Z/ G d de.          Z0ej        ej        ej'        ej%        ej        ej        iZ1d Z2d Z3ej4        ej5        z   dz   Z6d Z7ddZ8d Z9	 ddZ:e;dk    r e<d           dS dS )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                       e Zd ZdS )NotSupportedExceptionN)__name__
__module____qualname__     C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\win32com/client/build.pyr   r   #   s        Dr   r   DropIndirectionc                   F    e Zd ZdZddej        ddfdZd Zd Zd Z	d Z
dS )	MapEntryz3Simple holder for named attibutes - items in a map.Nr   c                     t          |t                    r|| _        d | _        n|d         | _        || _        || _        || _        || _        || _        d| _        || _	        d S Nr   )

isinstanceintdispiddescnamesdocresultCLSIDresultDocumentationwasPropertyhidden)self
desc_or_idr   r   r   	resultDocr   s          r   __init__zMapEntry.__init__K   sn     j#&& 	#$DKDII$Q-DK"DI
&#,  	 r   c                 .    d                     |           S )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__zMapEntry.__repr__d   s    = &4&..		r   c                 8    | j         }|t          j        k    rd S |S N)r   	pythoncomIID_NULLr   rcs     r   GetResultCLSIDzMapEntry.GetResultCLSIDk   s"    ###4	r   c                 >    |                                  }|dS d| dS )NNone')r,   r*   s     r   GetResultCLSIDStrzMapEntry.GetResultCLSIDStrr   s+      "":62yyyr   c                 .    | j         d S | j         d         S r   )r   r$   s    r   GetResultNamezMapEntry.GetResultNamey   s    #+4'**r   )r   r	   r
   __doc__r(   r)   r    r%   r,   r0   r2   r   r   r   r   r   H   s~        99
 &   2      + + + + +r   r   c                       e Zd Zd ZddZdS )OleItemNc                     || _         | j         r t          | j         d                   | _        nd | _        d| _        d| _        d| _        d | _        d | _        d S r   )r   MakePublicAttributeNamepython_namebWrittenbIsDispatchbIsSinkclsidco_class)r   r   s     r   r    zOleItem.__init__   s\    8 	$6tx{CCD#D
r   r'   r   r	   r
   typenamer    r   r   r   r5   r5      s-        H
 
 
 
 
 
r   r5   c                   X    e Zd Zd ZddZd Zd Zd Zd ZddZ	d	 Z
dd
ZddZddZdS )DispatchItemN   c                     t                               | |           i | _        i | _        i | _        i | _        d | _        d| _        |r|                     |||           d S d S r   )	r5   r    propMap
propMapGet
propMapPutmapFuncsdefaultDispatchNamer   Build)r   typeinfoattrr   bForUsers        r   r    zDispatchItem.__init__   sq    s####'  	1JJxx00000	1 	1r   c                    |                      |j        d                   \  }}}|dk    r^|dz   |k    s||j        d         dz   k    rd|z   }d}nd}|| j        v s	|| j        v rd|z   }n|}d|_        || j        |<   |r| j        |= d S d S d S )N   rB      Setr   )CountInOutOptArgsr   rG   rE   r   rF   r   keyiteminsoutsoptsnewKeydeleteExistings           r   _propMapPutCheck_zDispatchItem._propMapPutCheck_   s    001>>T477ax3#1)9"9"9!"!"$-''3$/+A+A"S[FF F D$(DM&! )OC((( 7) )r   c                     |                      |j        d                   \  }}}|dk    rO|j        d         |k    s||k    rd|z   }d}nd}|| j        v rd|z   }n|}d|_        || j        |<   |r| j        |= d S d S d S )NrN   r   rO   GetrB   )rQ   r   rG   r   rE   rR   s           r   _propMapGetCheck_zDispatchItem._propMapGetCheck_   s    001>>T477y|s""cTkk!"!"$-''"S[FF F D$(DM&! )OC((( 7) )r   c                 B   |j         t          j        k    sJ |j        }|j        }	 |                    |          }|d         }n# t          j        $ r d}d }Y nw xY wd }	 |r|                    |          }n# t          j        $ r Y nw xY w|dk    r	|r|| _        |j	        }	|j
        \  }
}}t          |
|          \  }
}}|
|||f|_
        g }|j        D ]7}|\  }
}}t          |
|          \  }}}||||f}|                    |           8t          |          |_        |t          j        z  dk    }|	t          j        k    r| j        }n|	t          j        t          j        fv ri| j                            |d           }|D|j        d         t          j        k    r| j        }d|z   }n>d|_        || j        d|z   <   | j        }n"| j        }n|	t          j        k    r| j        }nd }|2t5          ||||||          ||<   |j        t          j        k    rd S ||fS d S )Nr       rP   rB   )desckindr(   DESCKIND_FUNCDESCmemid
wFuncFlagsGetNames	ole_errorGetDocumentationrH   invkindrettype_ResolveTypeargsappendtupleFUNCFLAG_FHIDDENINVOKE_PROPERTYGETrE   INVOKE_PROPERTYPUTINVOKE_PROPERTYPUTREFrF   getr   rG   r   INVOKE_FUNCr   funckindFUNC_DISPATCH)r   rJ   fdescrL   id	funcflagsr   namer   rh   typereprflagdefvalr   r   argListargDescarg_type	arg_clsidarg_docr   mapexistings                          r   	_AddFunc_zDispatchItem._AddFunc_   s   ~!<<<<<[$		%%b))E8DD" 	 	 	DEEE	 	 4//33" 	 	 	D	 77t7'+D$- "'$+7(+K+K(+y $;z 	$ 	$G%,"HdF+7(+K+K(Hifi7GNN7####7^^
i88Q>i222/CC 5y7VWWW**466H#=#y'CCC-C 4<DD+,H(2:DM%$,//CCo	----CCC{ !sKFSSCI ~!888t#;ts#   A AA!A9 9B
Bc                    |j         t          j        k    sJ |j        t          j        k    r|j        }|                    |          }|j        \  }}}t          ||          \  }}	}
|||f|_        d }	 |r|	                    |          }n# t          j
        $ r Y nw xY w| j        }|j        dz  dk    }t          ||||	|
|          ||d         <   |d         |fS d S )N@   r   )ra   r(   DESCKIND_VARDESCvarkindVAR_DISPATCHrc   re   elemdescVarrj   rg   rf   rD   	wVarFlagsr   )r   rJ   vardescrL   rw   r   rz   flagsr|   r   r   r   r   r   s                 r   _AddVar_zDispatchItem._AddVar_  s    9#=====?i444B%%b))E&-&9#HeV/;Hh/O/O,Hk9"*E6"9GC 8"33B77C&    ,C'$.14F$[)V CaM !Hc?"4s   5B BBc                 z   |d         | _         |j        t          j        z  dk    | _        |d S t          |d                   D ].}|                    |          }|                     |||           /t          |d                   D ].}|                    |          }| 	                    |||           /t          | j                                                  D ]\  }}|                     ||           t          | j                                                  D ]\  }}|                     ||           d S )Nr   rO      )r<   
wTypeFlagsr(   TYPEFLAG_FDISPATCHABLEr:   rangeGetFuncDescr   
GetVarDescr   listrE   itemsr]   rF   rZ   )r   rJ   rK   rL   jrv   rS   rT   s           r   rI   zDispatchItem.Build,  sL   !W
 Oi.NNSTTFtAw 	6 	6A((++ENN8UH5555 tAw 	5 	5A''**EMM(E84444
 do335566 	. 	.IC""3----do335566 	. 	.IC""3----	. 	.r   c                     dx}x}}|D ]W}|d         }|dk    r|dz  }|dz  }|t           j        z  r|dz  }|t           j        z  r|dz  }|t           j        z  r|dz  }X|||fS )zhReturn tuple counting in/outs/OPTS.  Sum of result may not be len(argTuple), as some args may be in/out.r   rB   )r(   PARAMFLAG_FINPARAMFLAG_FOPTPARAMFLAG_FOUT)r   argTuplerU   outrW   argCheckinOuts          r   rQ   zDispatchItem.CountInOutOptArgsD  s    cD  	 	HQKEzzqq922 1HC933 AID933 1HCC~r   c                     |j         @t          |j                   dk     s|j         d         dk    r|                     |||          S |                     |||          S )NrO   )r   lenMakeDispatchFuncMethodMakeVarArgsFuncMethod)r   entryry   
bMakeClasss       r   MakeFuncMethodzDispatchItem.MakeFuncMethodU  s\    :!s5:':':ejmr>Q>Q..udJGGG--eT:FFFr   c                    |j         }|j        }|j        }g }|r	d}d}	d}
d}nd}d}	d}
d}d}|d         }|dz   |z   d	z   t          |||	|
||          z   d
z   }|                    |           |r6|d         r.|                    |dz   t          |d                   z              |                                }|rd|z  }nd}|d         d d         }t          d |d         D                       }d |d         D             }d |D             }d }t          |          dk    rgt          |          dk    rS|d         dk    rF|d         }|t          v r0d
                    |||d         ||t          ||                    }n|t          j        t          j        fv rd
                    |||d         ||t          ||                    }|| dz  }|t          j        k    rH|d
                    |          z  }|| dz  }|d
                    |          z  }|| dz  }|| dz  }|| d|d| dz  }|| dz  }nF|t          j        k    r6| d }|d!
                    |||d         ||t          ||                    z  }|0d"
                    |||d         ||||t          ||                    }|                    |           |                    d           |S )#N	defaultNamedOptArgdefaultNamedNotOptArgdefaultUnnamedArgr_   zpythoncom.Missingr   def z(selfz):rB   z'%s'r.      rN   c                 "    g | ]}|d d         S )NrN   r   .0whats     r   
<listcomp>z7DispatchItem.MakeDispatchFuncMethod.<locals>.<listcomp>  s     888t$rr(888r   c                     g | ]
}|d          S rB   r   r   s     r   r   z7DispatchItem.MakeDispatchFuncMethod.<locals>.<listcomp>  s    4444tAw444r   c                 R    g | ]$}|t           j        t           j        z  z  d k    "|%S )r   )r(   r   PARAMFLAG_FRETVAL)r   r{   s     r   r   z7DispatchItem.MakeDispatchFuncMethod.<locals>.<listcomp>  s>     
 
 
y/)2MMNRSSS SSSr   z;{}	return self._oleobj_.InvokeTypes({}, LCID, {}, {}, {}{})r`   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   BuildCallListrl   _makeDocStringr,   rm   r   NoTranslateMapr#   _BuildArgListr(   VT_DISPATCH
VT_UNKNOWNVT_BSTR)r   r   ry   r   rv   r   r   ret
linePrefixdefNamedOptArgdefNamedNotOptArgdefUnnamedArg	defOutArgrw   r"   resclsidretDescargsDescparam_flags
bad_paramsrds                        r   r   z#DispatchItem.MakeDispatchFuncMethod\  s   
i 		0J1N 7/MMJ0N 3/M'	1X   ! 	  	
 	

1 	C3q6 	CJJzD(>#a&+A+AABBB'')) 	(HHH(2A2,88uQx88899
 5458444
 
#
 
 


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

1

2
r   c                    |j         }|j        }|j        }g }d}|rd}	nd}	|                    |	dz   |z   dz   |z   dz              |r6|d         r.|                    |	dz   t	          |d                   z              |r	|d         }
nt
          j        }
|	d	z   }|                    |t          |j                  z   d
|
|d         fz  z              |                    d           |S )Nr   r   r_   r   (z	, *args):rB   r`   z7	return self._get_good_object_(self._oleobj_.Invoke(*((z,0,%d,1)+args)),'%s')r   )	r   r   r   rl   r   r(   DISPATCH_METHODstrr   )r   r   ry   r   rv   r   r   r   	argPrefixr   
invoketyper"   s               r   r   z"DispatchItem.MakeVarArgsFuncMethod  s   
i	 	JJJ

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

EL!!!$;z5QR8>T$TT	
 	
 	
 	

2
r   )NNNrB   r   )r   r	   r
   r?   r    rZ   r]   r   r   rI   rQ   r   r   r   r   r   r   rA   rA      s        H
1 
1 
1 
1) ) )") ) )"L L L\  <. . . .0  "G G G Gr r r rh     r   rA   c                       e Zd ZddZdS )
VTableItemrB   c                 F   t                               | |||           |
J d            t          t          | j                                        | j                                        | j                                                  d           }d |D             | _        d S )Nz&Can't build vtables without type info!c                     | j         d         S )Nr   )r   )ms    r   <lambda>z"VTableItem.Build.<locals>.<lambda>  s    !&) r   )rS   c                 6    g | ]}|j         |j        |j        fS r   )r   r   r   )r   r   s     r   r   z$VTableItem.Build.<locals>.<listcomp>  s2     
 
 
8=U[%,
3
 
 
r   )	rA   rI   sortedr   rG   valuesrE   rF   vtableFuncs)r   rJ   rK   rL   	meth_lists        r   rI   zVTableItem.Build  s    44:::##%M###$$&&&&((&&(( 
 $#
 
 
	
 
AJ
 
 
r   Nr   )r   r	   r
   rI   r   r   r   r   r     s(        
 
 
 
 
 
r   r   c                       e Zd Zd Zd ZdS )LazyDispatchItemc                 \    |d         | _         t                              | d ||d           d S r   )r<   rA   r    )r   rK   r   s      r   r    zLazyDispatchItem.__init__  s/    !W
dD$Q77777r   Nr>   r   r   r   r   r     s(        !H8 8 8 8 8r   r   c                    t          | t                    r| \  }}|t          j        k    rrt          |t                    o|d         t          j        k    }t          ||          \  }}}|r|t          j        t          j        fv r|||fS |t          j        z  ||fS |t          j	        k    r&t          ||          \  }}}t          j
        |z  ||fS |t          j        k    rt          j        d d fS |t          j        k    r	 |                    |          }nK# t          j        $ r9}|j        t          j        t          j        fv rt          j        d d fcY d }~S  d }~ww xY w|                                }	|	j        }
|
t          j        k    r|	j        }t          ||          S |
t          j        t          j        fv rt          j        d d fS |
t          j        k    r>|                                d         }|                    d          }t          j        ||fS |
t          j        t          j        fv r>|                                d         }|                    d          }t          j        ||fS |
t          j        k    rt          j        d d fS t?          d          t@          !                    | |           d d fS )Nr   r   z*Can not resolve alias or user-defined type)"r   rm   r(   VT_PTRVT_USERDEFINEDrj   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_DISPATCHrg   TKIND_INTERFACETKIND_COCLASSTKIND_RECORD	VT_RECORDr   typeSubstMaprr   )rz   	itypeinfoindir_vtsubreprwas_user	sub_clsidsub_docresultTypeInfodetails
resultAttrtypeKindtdescr<   retdocs                 r   rj   rj     s    (E"" @V$'y''' 7E**UwqzY=U/U  +7w	*J*J'GY 3G%$(  
 	722Y//GCCy---*6w	*J*J'GY%/GCCy*** &d22y///	!*!9!9'!B!B&   ?34'  
 %/t;;;;;;; (3355J!*H9000"-#E>:::i2I4JKKK d22Y555&2244Q7'88<< ,eV;;i79PQQQ&2244Q7'88<< +UF::Y333 *D$66'(TUUUHh//t;;s$   D E#*-EE#EE#c           	      F   t          | d         t          | d                             }t          |          }d|v r"|                    d          }d|fz  ||<   d|v "t          t	          t
          |d|dz                                }d}t          |          |k     r9|                    dt          |          fz             t          |          |k     9t          dt          |          d          D ]}||xx         dz  cc<   d	d
                    |          z   S )z4Builds list of args to the underlying Invoke method.rO   rN   Narg%drB   r      z
			,r   )	maxr   r   indexr   r7   rl   r   join)rv   r   numArgsiname_nums        r   r   r   X  s"    %(CaMM**GKKE
%--KKaT>a %-- ,eA14E.FGGHHEH
e**w

WE

},--- e**w

 1c%jj!$$  aJ5!!!!r   _c                     d}| |         dk    r|dz  }| |         dk    |dk    s
J d            | |dz
  d          | d |dz
           z   S )Nr   r  rB   rN   z1Should only be here with names starting with '__'r   )	classNamer  s     r   demunge_leading_underscoresr  q  si    	A
A,#

	Q A,#

666F666QUWW	'AE' 222r   Fc                    | d d         dk    rt          |           S | dk    rd} nt          |           r0|                                 }|| k    r|                                }|S |rEt	          t
          |           r0|                                 }|| k    r|                                }|S |                                 r| S d                    d | D                       S )NrN   __r.   NONEr_   c                 $    g | ]}|t           v |S r   )valid_identifier_chars)r   chars     r   r   z+MakePublicAttributeName.<locals>.<listcomp>  s#    QQQT$:P2P2PD2P2P2Pr   )r  r   
capitalizeupperhasattrbuiltinsisidentifierr  )r  	is_globalr   s      r   r7   r7   {  s     !}*9555	f		 			9		 ""$$)))++C
	 	wx33 	 ""$$)))++C
				!	! 77QQYQQQRRRr   c                    	 | d         }n# t           $ r t          j        }Y nw xY w|t          j        z  r| d         }t	          |t
          j                  r.t          t          |                                                    S t	          |t                    rB|j
        }|j        }|j        }|j        }|j        }|j        }|j        }	dt#                      z  S t          |          S d S )NrB   rN   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reprrm   utctimetupler   yearmonthdayhourminutesecondmseclocals)
	defArgValr   valr'  r(  r)  r*  r+  r,  r-  s
             r   MakeDefaultArgReprr1    s    (! ( ( ('( y.. lc8,-- 	3 c..0011222c8$$ 	8DIE'C8DZFZF8Dr(( Cyy4s    $$c                 J   t          | d                   }| d         }d}	|dk    r|}
|dz  }n||z
  }
t          |          D ]}	 ||dz            }|du}n# t          $ r d}Y nw xY w|sd|z  }| d         |         }t          |          }|C|d         t          j        t          j        z  z  t          j        k    r|}n|r||
k    r|}n|}n|}t          |          }|dz   d	z  dk    r|	d
z  }	|r|	dz  }	|	dz  }	|	d|z   z  }	|r|	d|z   z  }	|dk    r|	d|d         z   z  }	|	S )z)Builds a Python declaration for a method.rN   rO   r_   r   rB   Nr   r  r	  
#z			r   =z, *)r   r   r"  r1  r(   r   r   r7   )rv   r   r   r   r   r   
is_commentr  
numOptArgsstrvalfirstOptArgargargNamenamedArgthisdescr/  s                   r   r   r     s    %(mmGqJFR1
*W~~ (& (&	C!GnGd*HH 	 	 	HHH	 	&oG8C=&x00	 y7):QQR+, , &		  .k))$2		$5		 -I)'22 !Gq=AdNF #hF$.  	&cIo%FR%%)##Ms   AA$#A$__main__zFUse 'makepy.py' to generate Python code - this module is just a helper)F)=r3   r  r$  string	itertoolsr   keywordr   r(   r   
pywintypesr   r%  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   r5   rA   r   r   r   rj   r   ascii_lettersdigitsr  r  r7   r1  r   r   printr   r   r   <module>r`     s  
 
$                          
 	 	 	 	 	I 	 	 	 $ OOOOOOO3 8 %&&4+ 4+ 4+ 4+ 4+ 4+ 4+ 4+n        W W W W W7 W W Wv

 
 
 
 
 
 
 
08 8 8 8 8| 8 8 8 ioy')/D< D< D<N" " ",  -=C 3 3 3!S !S !S !SR  L ? ? ? ?D z	E
RSSSSS r   