§
    q�’j|n  ã                   ó¨  — d 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	Z	ddl
mZ ddlmZ dZdZdZe	j        e	j        e	j        e	j        e	j        gZej        ej        ej        ej        gZd„ Zd	„ Zej        ej                 Z ej        ej!                 Z"e#efZ$ej%        fd
„Z&d„ Z'd„ Z(dddej%        fd„Z)d„ Z*ddej%        fd„Z+ G d„ d¦  «        Z,dS )a8  Support for dynamic COM client support.

Introduction
 Dynamic COM client support is the ability to use a COM server without
 prior knowledge of the server.  This can be used to talk to almost all
 COM servers, including much of MS Office.

 In general, you should not use this module directly - see below.

Example
 >>> import win32com.client
 >>> xl = win32com.client.Dispatch("Excel.Application")
 # The line above invokes the functionality of this class.
 # xl is now an object we can use to talk to Excel.
 >>> xl.Visible = 1 # The Excel window becomes visible.

é    N)Úchain)Ú
MethodType)ÚIIDTypeé   )Úbuildc                  ó`   — t           r&| D ]}t          |d¬¦  «         Œt          ¦   «          d S d S ©Nú )Úend)Ú	debuggingÚprint©ÚargsÚargs     úEC:\Projects\DSCons\.venv\Lib\site-packages\win32com\client\dynamic.pyÚdebug_printr   6   sF   € Ýð Øð 	 ð 	 ˆCÝ�#˜3ÐÑÔÐÐÝ‰Œˆˆˆðð ó    c                  ó`   — t           r&| D ]}t          |d¬¦  «         Œt          ¦   «          d S d S r	   )Údebugging_attrr   r   s     r   Údebug_attr_printr   =   sF   € Ýð Øð 	 ð 	 ˆCÝ�#˜3ÐÑÔÐÐÝ‰Œˆˆˆðð r   c                 ó  — t          | t          ¦  «        r| S t          | t          ¦  «        rL	 t          j        | ¦  «        } nG# t          j        $ r$ t          j        | d |t          j        ¦  «        } Y nw xY wt          | d| ¦  «        } | S ©NÚ_oleobj_)	Ú
isinstanceÚPyIDispatchTypeÚ_GoodDispatchTypesÚ	pythoncomÚconnectÚ	ole_errorÚCoCreateInstanceÚIID_IDispatchÚgetattr)Ú	IDispatchÚclsctxs     r   Ú_GetGoodDispatchr%   K   s�   € å�)�_Ñ-Ô-ð ØÐÝ�)Õ/Ñ0Ô0ð 	>ð	Ý!Ô)¨)Ñ4Ô4ˆIˆIøÝÔ"ð 	ð 	ð 	Ý!Ô2Ø˜4 ­Ô)@ñô ˆIˆIˆIð	øøøõ ˜I z°9Ñ=Ô=ˆ	ØÐs   ®A Á0A6Á5A6c                 óx   — |€t          | t          ¦  «        r| }nt          |¦  «        }t          | |¦  «        |fS ©N)r   Ústrr%   )r#   ÚuserNamer$   s      r   Ú_GetGoodDispatchAndUserNamer*   \   sD   € ð ÐÝ�i¥Ñ%Ô%ð 	!Ø ˆHøõ �x‘=”=ˆÝ˜Y¨Ñ/Ô/°Ð:Ð:r   c                 óh   — | r| j         s|S | j         j        t          j        k    r|S | j         j        S r'   )ÚdescÚdesckindr   ÚDESCKIND_VARDESCÚinvkind)ÚentryÚinvoke_types     r   Ú_GetDescInvokeTyper2   h   sA   € ð ð ˜œ
ð ØÐà„zÔ�iÔ8Ò8Ð8ØÐð Œ:ÔÐr   c                 ó@  — t          | ||¦  «        \  } }|€t          }d }	 |€|                      ¦   «         }|�/	 |                     ¦   «         }||f}n# t          j        $ r Y nw xY wn# t          j        $ r d }Y nw xY wt          | ||¦  «        } || |||¬¦  «        S )N)Úlazydata)r*   Ú	CDispatchÚGetTypeInfoÚGetTypeCompr   Ú	com_errorÚMakeOleRepr)r#   r)   ÚcreateClassÚtypeinfor$   r4   ÚtypecompÚolereprs           r   ÚDispatchr>   x   sã   € õ 6°iÀÈ6ÑRÔRÑ€IˆxØÐÝˆØ€HðØÐØ ×,Ò,Ñ.Ô.ˆHØÐðà#×/Ò/Ñ1Ô1�Ø# XÐ-��øÝÔ&ð ð ð Ø�ðøøøøøåÔð ð ð Øˆˆˆðøøøå˜) X¨xÑ8Ô8€GØˆ;�y '¨8¸hÐGÑGÔGÐGs4   ¡A) ºA ÁA) ÁA%Á"A) Á$A%Á%A) Á)A=Á<A=c                 ó¾  — d }|�Ã	 |                      ¦   «         }|d         t          j        k    rS|d         t          j        z  r>|                     d¦  «        }|                     |¦  «        }|                      ¦   «         }|€t          j        ||d d¦  «        }nt          j        |d ¦  «        }n# t          j	        $ r Y nw xY w|€t          j        ¦   «         }|S )Né   é   éÿÿÿÿr   )
ÚGetTypeAttrr   ÚTKIND_INTERFACEÚTYPEFLAG_FDUALÚGetRefTypeOfImplTypeÚGetRefTypeInfor   ÚDispatchItemÚLazyDispatchItemr   )r#   r;   r<   r=   ÚattrÚhrefs         r   r9   r9   “   sð   € Ø€GØÐð	Ø×'Ò'Ñ)Ô)ˆDð �Q”�9Ô4Ò4Ð4Ø˜”H�yÔ7Ñ7ð 5ð
  ×4Ò4°RÑ8Ô8�Ø#×2Ò2°4Ñ8Ô8�Ø×+Ò+Ñ-Ô-�ØÐÝÔ,¨X°t¸TÀ1ÑEÔE��åÔ0°°tÑ<Ô<�øøÝÔ"ð 	ð 	ð 	ØˆDð	øøøà€ÝÔ$Ñ&Ô&ˆØ€Ns   †B,B3 Â3CÃCc                 óx   — t          | ||¦  «        \  } }|€t          } || t          j        ¦   «         |¦  «        S )zDispatch with no type info)r*   r5   r   rH   )r#   r)   r:   r$   s       r   ÚDumbDispatchrM   ®   sB   € õ 6°iÀÈ6ÑRÔRÑ€IˆxØÐÝˆØˆ;�y¥%Ô"4Ñ"6Ô"6¸ÑAÔAÐAr   c                   óÎ   — e Zd Zd d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	 	 d d„Zd d„Zd d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z dS )!r5   Nc                 ó®   — |€d}|| j         d<   || j         d<   || j         d<   i | j         d<   i | j         d<   d | j         d<   d | j         d<   || j         d	<   d S )
Nz	<unknown>r   Ú
_username_Ú	_olerepr_Ú_mapCachedItems_Ú_builtMethods_Ú_enum_Ú_unicode_to_string_Ú
_lazydata_)Ú__dict__)Úselfr#   r=   r)   r4   s        r   Ú__init__zCDispatch.__init__¼   sv   € ØÐØ"ˆHØ$-ˆŒ�jÑ!Ø&.ˆŒ�lÑ#Ø%,ˆŒ�kÑ"Ø,.ˆŒÐ(Ñ)Ø*,ˆŒÐ&Ñ'Ø"&ˆŒ�hÑØ/3ˆŒÐ+Ñ,Ø&.ˆŒ�lÑ#Ð#Ð#r   c                 óD  — | j         j        r#|                      | j         j        ¦  «        \  }}n%t          j        t          j        z  t          j        }}|�<|t          |df|z   }|                       | j	        j
        |Ž | j         j        d¦  «        S t          d¦  «        ‚)zJProvide 'default dispatch' COM functionality - allow instance to be calledNr   ú5This dispatch object does not define a default method)rQ   ÚdefaultDispatchNameÚ_find_dispatch_type_r   ÚDISPATCH_METHODÚDISPATCH_PROPERTYGETÚDISPID_VALUEÚLCIDÚ_get_good_object_r   ÚInvokeÚ	TypeError)rX   r   r/   ÚdispidÚallArgss        r   Ú__call__zCDispatch.__call__È   s¬   € àŒ>Ô-ð 	Ø"×7Ò7Ø”Ô2ñô ‰OˆG�V�Võ
 Ô)­IÔ,JÑJÝÔ&ð ˆGð ÐØ�t W¨aÐ0°4Ñ7ˆGØ×)Ò)Ø$�”Ô$ gÐ.°´Ô0RÐTXñô ð õ ÐOÑPÔPÐPr   c                 ó   — dS )NT© ©rX   s    r   Ú__bool__zCDispatch.__bool__Ú   s   € Øˆtr   c                 ó   — d| j         z  S )Nú<COMObject %s>)rP   rj   s    r   Ú__repr__zCDispatch.__repr__ß   s   € Ø 4¤?Ñ3Ð3r   c                 óÄ   — 	 t          |                      ¦   «         ¦  «        S # t          j        $ r-}|j        t
          vr‚ |                      ¦   «         cY d }~S d }~ww xY wr'   )r(   rg   r   r8   ÚhresultÚERRORS_BAD_CONTEXTrn   )rX   Údetailss     r   Ú__str__zCDispatch.__str__â   sm   € ð	#Ý�t—}’}‘”Ñ'Ô'Ð'øÝÔ"ð 	#ð 	#ð 	#ØŒÕ&8Ð8Ð8ØØ—=’=‘?”?Ð"Ð"Ð"Ð"Ð"Ð"øøøøð	#øøøs   ‚ # £A²"AÁAÁAc                 ó  — t          | j        t          | j        ¦  «        |                      ¦   «         ¦  «        }	 t          |d„ | j        D ¦   «         ¦  «        }n# t          $ r Y nw xY wt          t          |¦  «        ¦  «        S )Nc                 ó   — g | ]	}|j         ‘Œ
S ri   )ÚName)Ú.0Úps     r   ú
<listcomp>z%CDispatch.__dir__.<locals>.<listcomp>ï   s   € Ð+MÐ+MÐ+M°q¨A¬FÐ+MÐ+MÐ+Mr   )	r   rW   ÚdirÚ	__class__Ú	_dir_ole_ÚProperties_ÚAttributeErrorÚlistÚset)rX   Ú
attributess     r   Ú__dir__zCDispatch.__dir__ì   s…   € Ý˜4œ=­#¨d¬nÑ*=Ô*=¸t¿~º~Ñ?OÔ?OÑPÔPˆ
ð	Ý˜zÐ+MÐ+M¸DÔ<LÐ+MÑ+MÔ+MÑNÔNˆJˆJøÝð 	ð 	ð 	ØˆDð	øøøå•C˜
‘O”OÑ$Ô$Ð$s   ¼A Á
A)Á(A)c                 óØ   — i }t          d| j                             ¦   «         ¦  «        D ]2}| j                             |¦  «        }|                      ||¦  «         Œ3t          |¦  «        S ©Nr   )Úranger   ÚGetTypeInfoCountr6   Ú_UpdateWithITypeInfo_r   )rX   Ú
items_dictÚiTIÚtypeInfos       r   r|   zCDispatch._dir_ole_ô   sj   € Øˆ
Ý˜˜DœM×:Ò:Ñ<Ô<Ñ=Ô=ð 	=ð 	=ˆCØ”}×0Ò0°Ñ5Ô5ˆHØ×&Ò& z°8Ñ<Ô<Ð<Ð<Ý�JÑÔÐr   c                 óH  — |g}t           j        d i}t          |¦  «        dk    rý|                     ¦   «         }|                     ¦   «         }|j        |vr·d ||j        <   t          d|j        ¦  «        D ]@}|                     |¦  «        }| 	                    |j
        ¦  «        d         }||vrd ||<   ŒAt          d|j        ¦  «        D ]A}	|                     |	¦  «        }
|                     |
¦  «        }|                     |¦  «         ŒBt          |¦  «        dk    °ûd S d S r„   )r   r!   ÚlenÚpoprC   Úiidr…   ÚcFuncsÚGetFuncDescÚGetNamesÚmemidÚ
cImplTypesrF   rG   Úappend)rX   rˆ   rŠ   Ú	typeInfosÚinspectedIIDsÚtypeAttrÚiFunÚfunDescÚfunNameÚ	iImplTypeÚiRefTypeÚrefTypeInfos               r   r‡   zCDispatch._UpdateWithITypeInfo_û   s6  € Ø�Jˆ	å"Ô0°$Ð7ˆå�)‰nŒn˜qÒ Ð Ø —}’}‘”ˆHØ×+Ò+Ñ-Ô-ˆHàŒ| =Ð0Ð0Ø.2�˜hœlÑ+Ý! ! X¤_Ñ5Ô5ð 3ð 3�DØ&×2Ò2°4Ñ8Ô8�GØ&×/Ò/°´Ñ>Ô>¸qÔA�GØ jÐ0Ð0Ø.2˜
 7Ñ+øõ "' q¨(Ô*=Ñ!>Ô!>ð 2ð 2�IØ'×<Ò<¸YÑGÔG�HØ"*×"9Ò"9¸(Ñ"CÔ"C�KØ×$Ò$ [Ñ1Ô1Ð1Ð1õ# �)‰nŒn˜qÒ Ð Ð Ð Ð Ð r   c                 ó:   — t          |d|¦  «        }| j        |k    S r   ©r"   r   ©rX   Úothers     r   Ú__eq__zCDispatch.__eq__  ó    € Ý˜˜z¨5Ñ1Ô1ˆØŒ} Ò%Ð%r   c                 ó:   — t          |d|¦  «        }| j        |k    S r   rŸ   r    s     r   Ú__ne__zCDispatch.__ne__  r£   r   c                 óD   — t          |                      ¦   «         ¦  «        S r'   )Úintrg   rj   s    r   Ú__int__zCDispatch.__int__  s   € Ý�4—=’=‘?”?Ñ#Ô#Ð#r   c                 ó˜   — |                       d¦  «        \  }}|r"| j                             |t          |d¦  «        S t	          d¦  «        ‚)NÚCountr   z3This dispatch object does not define a Count method)r]   r   rc   ra   rd   )rX   r/   re   s      r   Ú__len__zCDispatch.__len__  sM   € Ø×3Ò3°GÑ<Ô<‰ˆ�Øð 	BØ”=×'Ò'¨µ°g¸qÑAÔAÐAÝÐMÑNÔNÐNr   c                 óö   — 	 t           j        t           j        z  }| j                             t           j        t          |dd¦  «        }n# t           j        $ r Y d S w xY wddlm	} | 
                    |d ¦  «        S )N©é   é
   ri   r   )Úutil)r   r^   r_   r   ÚInvokeTypesÚDISPID_NEWENUMra   r8   Ú r°   ÚWrapEnum)rX   r/   Úenumr°   s       r   Ú_NewEnumzCDispatch._NewEnum%  s‹   € ð	ÝÔ/µ)Ô2PÑPˆGØ”=×,Ò,ÝÔ(­$°¸À2ñô ˆDˆDøõ Ô"ð 	ð 	ð 	Ø�4�4ð	øøøàÐÐÐÐÐà�}Š}˜T 4Ñ(Ô(Ð(s   ‚AA	 Á	AÁAc           	      ó°  — t          |t          ¦  «        rc| j        d         €|                      ¦   «         | j        d<   | j        d         �-|                      | j                             |¦  «        ¦  «        S |                      d¦  «        \  }}|�6|                      | j         	                    |t          |d|¦  «        ¦  «        S t          d¦  «        ‚)NrT   ÚItemr   z(This object does not support enumeration)r   r§   rW   r¶   rb   rT   Ú__getitem__r]   r   rc   ra   rd   )rX   Úindexr/   re   s       r   r¹   zCDispatch.__getitem__1  sÊ   € õ �e�SÑ!Ô!ð 	NØŒ}˜XÔ&Ð.Ø*.¯-ª-©/¬/�”˜hÑ'ØŒ}˜XÔ&Ð2Ø×-Ò-¨d¬k×.EÒ.EÀeÑ.LÔ.LÑMÔMÐMà×3Ò3°FÑ;Ô;‰ˆ�ØÐØ×)Ò)Ø”×$Ò$ V­T°7¸A¸uÑEÔEñô ð õ ÐBÑCÔCÐCr   c                 óF  — | j         j        r#|                      | j         j        ¦  «        \  }}n%t          j        t          j        z  t          j        }}|�=|t          |d|f|z   }|                       | j	        j
        |Ž | j         j        d ¦  «        S t          d¦  «        ‚)Nr   r[   )rQ   r\   r]   r   ÚDISPATCH_PROPERTYPUTÚDISPATCH_PROPERTYPUTREFr`   ra   rb   r   rc   rd   )rX   rº   r   r/   re   rf   s         r   Ú__setitem__zCDispatch.__setitem__A  s°   € ð Œ>Ô-ð 	Ø"×7Ò7Ø”Ô2ñô ‰OˆG�V�Võ
 Ô.µÔ1RÑRÝÔ&ð ˆGð ÐØ�t W¨a°Ð7¸$Ñ>ˆGØ×)Ò)Ø$�”Ô$ gÐ.°´Ô0RÐTXñô ð õ ÐOÑPÔPÐPr   c                 óR  — || j         j        v r&| j         j        |         }|j        d         |j        fS || j         j        v r&| j         j        |         }|j        d         |j        fS 	 | j                             d|¦  «        }n#  Y dS xY wt          j        t          j	        z  |fS )Né   r   ©NN)
rQ   ÚmapFuncsr,   re   Ú
propMapGetr   ÚGetIDsOfNamesr   r^   r_   )rX   Ú
methodNameÚitemre   s       r   r]   zCDispatch._find_dispatch_type_T  sª   € Ø˜œÔ0Ð0Ð0Ø”>Ô*¨:Ô6ˆDØ”9˜Q”< ¤Ð,Ð,à˜œÔ2Ð2Ð2Ø”>Ô,¨ZÔ8ˆDØ”9˜Q”< ¤Ð,Ð,ð	Ø”]×0Ò0°°JÑ?Ô?ˆFˆFøð	Ø�:�:øøøÝÔ(­9Ô+IÑIÈ6ÐQÐQs   Á*B ÂBc                 óh   —  | j         j        |t          |||f|z   Ž }|                      |||¦  «        S r'   )r   r±   ra   rb   )	rX   re   ÚwFlagsÚretTypeÚargTypesÚuserÚresultCLSIDr   Úresults	            r   Ú_ApplyTypes_zCDispatch._ApplyTypes_c  s@   € Ø*�”Ô*Ø•d˜F G¨XÐ6¸Ñ=ð
ˆð ×%Ò% f¨d°KÑ@Ô@Ð@r   c                 ó"   — t          ||¦  «        S r'   )r>   )rX   Úobr)   ÚreturnCLSIDs       r   Ú_wrap_dispatch_zCDispatch._wrap_dispatch_i  s   € õ ˜˜HÑ%Ô%Ð%r   c                 ó&  — t          |t          ¦  «        r|                      |||¦  «        S t          |t          ¦  «        rO	 |                     t
          j        ¦  «        }n# t
          j        $ r |cY S w xY w|                      |||¦  «        S |S r'   )r   r   rÒ   ÚPyIUnknownTypeÚQueryInterfacer   r!   r8   ©rX   rÐ   r)   ÚReturnCLSIDs       r   Ú_get_good_single_object_z"CDispatch._get_good_single_object_r  s£   € Ý�b�/Ñ*Ô*ð 	Cà×'Ò'¨¨H°kÑBÔBÐBÝ�b�.Ñ)Ô)ð 	CðØ×&Ò&¥yÔ'>Ñ?Ô?��øÝÔ&ð ð ð à�	�	�	ðøøøð ×'Ò'¨¨H°kÑBÔBÐBØˆ	s   ÁA# Á#A7Á6A7c                 ó¢   — |€dS t          |t          ¦  «        r"t          t          | ||fd„|¦  «        ¦  «        S |                      |¦  «        S )zÛGiven an object (usually the retval from a method), make it a good object to return.
        Basically checks if it is a COM object, and wraps it up.
        Also handles the fact that a retval may be a tuple of retvalsNc                 ó0   — |                      | ||¦  «        S r'   )rØ   )ÚoÚsÚounÚrcs       r   ú<lambda>z-CDispatch._get_good_object_.<locals>.<lambda>ˆ  s   € ð %&×$>Ò$>¸qÀ#ÀrÑ$JÔ$Jð r   )r   ÚtupleÚmaprØ   rÖ   s       r   rb   zCDispatch._get_good_object_  su   € ð ˆ:Ø�4Ý˜�EÑ"Ô"ð 	5ÝÝàØ Ø"ðKð Kð Kð ñô ñô ð ð ×0Ò0°Ñ4Ô4Ð4r   c                 ó  — t          j        |¦  «        }| j                             | j        j        |         |d¦  «        }d                     |¦  «        }	 t          |d| j        z  d¦  «        }i }t          ¦   «          	                    ¦   «         }t          j        j        |d<   t          |||¦  «         |}||         x}| j        |<   t          || ¦  «        S #  t!          d|¦  «         t#          j        ¦   «          Y nxY wdS )z1Make a method object - Assumes in olerepr funcmapr   ú
rm   Úexecr>   z'Error building OLE definition for code N)r   ÚMakePublicAttributeNamerQ   ÚMakeFuncMethodrÂ   ÚjoinÚcompilerP   ÚglobalsÚcopyÚwin32comÚclientr>   rä   rS   r   r   Ú	tracebackÚ	print_exc)	rX   ÚnamerÅ   ÚmethodCodeListÚ
methodCodeÚ
codeObjectÚtempNameSpaceÚglobNameSpaceÚfns	            r   Ú_make_method_zCDispatch._make_method_’  s  € åÔ2°4Ñ8Ô8ˆ
Øœ×6Ò6ØŒNÔ# DÔ)¨:°qñ
ô 
ˆð —Y’Y˜~Ñ.Ô.ˆ
ð	"õ ! Ð-=ÀÄÑ-OÐQWÑXÔXˆJàˆMå#™IœIŸNšNÑ,Ô,ˆMÝ(0¬Ô(@ˆM˜*Ñ%ÝØ˜M¨=ñô ð ð ˆDà-:¸4Ô-@Ð@ˆB�Ô$ TÑ*Ý˜b $Ñ'Ô'Ð'øð	"ÝÐAÀ:ÑNÔNÐNÝÔÑ!Ô!Ð!Ð!Ð!øøøØˆts   ÁBC Ã%Dc                 óø   — | j                              ¦   «         D ]}|                     ¦   «          Œi | _         | j        r#| j                             ¦   «          d| j        d<   | j        r
d| j        d<   d| _        dS )ztCleanup object - like a close - to force cleanup when you don't
        want to rely on Python's reference counting.Nr   rQ   )rR   ÚvaluesÚ	_Release_r   ÚReleaserW   rQ   rT   )rX   Ú	childConts     r   rù   zCDispatch._Release_®  sŠ   € ð Ô.×5Ò5Ñ7Ô7ð 	"ð 	"ˆIØ×ÒÑ!Ô!Ð!Ð!Ø "ˆÔØŒ=ð 	-ØŒM×!Ò!Ñ#Ô#Ð#Ø(,ˆDŒM˜*Ñ%ØŒ>ð 	.Ø)-ˆDŒM˜+Ñ&ØˆŒˆˆr   c                 óâ   — 	 | j         j        |         }|j        }|                       | j        j        |t          |j        d         df|z   Ž ¦  «        S # t          $ r t          |¦  «        ‚w xY w)zCall the named method as a procedure, rather than function.
        Mainly used by Word.Basic, which whinges about such things.rÀ   r   )
rQ   rÂ   re   rb   r   rc   ra   r,   ÚKeyErrorr~   )rX   rï   r   rÆ   ÚdispIds        r   Ú_proc_zCDispatch._proc_»  sƒ   € ð	'Ø”>Ô*¨4Ô0ˆDØ”[ˆFØ×)Ò)Ø$�”Ô$ v­t°T´Y¸q´\À1Ð&EÈÑ&NÐOñô ð øõ ð 	'ð 	'ð 	'Ý  Ñ&Ô&Ð&ð	'øøøs   ‚AA ÁA.c           	      óª  — t          d| j        ¦  «         	 t          d¦  «         | j        j        D ]}t          d|¦  «         Œt          d¦  «         | j        j                             ¦   «         D ]#\  }}t          d|› d|j        d›d|›�¦  «         Œ$t          d¦  «         | j        j                             ¦   «         D ]#\  }}t          d|› d|j        d›d|›�¦  «         Œ$t          d	¦  «         | j        j                             ¦   «         D ]#\  }}t          d|› d|j        d›d|›�¦  «         Œ$d
S #  t          j
        ¦   «          Y d
S xY w)z4Debug routine - dumps what it knows about an object.zAxDispatch containerzMethods:ú	zProps:z = 0xÚxz - z
Get Props:z
Put Props:N)r   rP   rQ   rÂ   ÚpropMapÚitemsre   rÃ   Ú
propMapPutrí   rî   )rX   ÚmethodÚpropr0   s       r   Ú_print_details_zCDispatch._print_details_Ç  s¢  € åÐ$ d¤oÑ6Ô6Ð6ð	"Ý�*ÑÔÐØœ.Ô1ð $ð $�Ý�d˜FÑ#Ô#Ð#Ð#Ý�(‰OŒOˆOØ#œ~Ô5×;Ò;Ñ=Ô=ð Dð D‘��eÝÐB˜4ÐBÐB e¤lÐBÐBÐB¸ÐBÐBÑCÔCÐCÐCÝ�,ÑÔÐØ#œ~Ô8×>Ò>Ñ@Ô@ð Dð D‘��eÝÐB˜4ÐBÐB e¤lÐBÐBÐB¸ÐBÐBÑCÔCÐCÐCÝ�,ÑÔÐØ#œ~Ô8×>Ò>Ñ@Ô@ð Dð D‘��eÝÐB˜4ÐBÐB e¤lÐBÐBÐB¸ÐBÐBÑCÔCÐCÐCðDð Døð	"ÝÔÑ!Ô!Ð!Ð!Ð!Ð!øøøs   —D!D: Ä:Ec                 óŒ   — 	 |                       |¦  «        rt          | j        › d|› d�¦  «         dS d S # t          $ r Y dS w xY w)Nz.__LazyMap__(z) added somethingr   r   )Ú_LazyAddAttr_r   rP   r~   ©rX   rJ   s     r   Ú__LazyMap__zCDispatch.__LazyMap__Ú  sz   € ð	Ø×!Ò! $Ñ'Ô'ð Ý Ø”ÐLÐL°TÐLÐLÐLñô ð ð �qð	ð øõ
 ð 	ð 	ð 	Ø�1�1ð	øøøs   ‚/5 µ
AÁAc                 ób  — | j         €dS d}| j         \  }}| j        }t          D �]	}	 |                     ||¦  «        \  }}|dk    r-|d d…         dv r!|                     |dd …         |¦  «        \  }}|t          j        k    r|                     ||d¦  «        }	n*|t          j        k    r|                     ||d¦  «        }	nd }	|	�]|	d         |	d         }}
||
         }||j	        k    r| 
                    |
|¦  «         n!||j        k    r|                     |
|¦  «         d}�Œ#  Y �ŒxY w|S )Nr   é   )ÚSetÚGetr   )rV   rQ   ÚALL_INVOKE_TYPESÚBindr   ÚDESCKIND_FUNCDESCÚ	_AddFunc_r.   Ú_AddVar_r  Ú_propMapPutCheck_rÃ   Ú_propMapGetCheck_)rX   rJ   Úresr;   r<   r=   Úir  ÚtÚrÚkeyrá   rÆ   s                r   r
  zCDispatch._LazyAddAttr_å  sf  € ØŒ?Ð"Ø�1ØˆØ!œ_Ñˆ�(Ø”.ˆõ
 "ð 	ñ 	ˆAðØ—}’} T¨1Ñ-Ô-‘��1ð ˜’6�6˜d 2 A 2œh¨.Ð8Ð8Ø#Ÿ=š=¨¨a¨b¨b¬°1Ñ5Ô5‘D�A�qØ�	Ô3Ò3Ð3Ø×)Ò)¨(°A°qÑ9Ô9�A�AØ�)Ô4Ò4Ð4Ø×(Ò(¨°1°aÑ8Ô8�A�Aà�AØ�yØ  œt Q q¤T˜�CØ˜sœ8�DØ˜gÔ0Ò0Ð0Ø×1Ò1°#°tÑ<Ô<Ð<Ð<Ø Ô 2Ò2Ð2Ø×1Ò1°#°tÑ<Ô<Ð<Ø�CùøðØ‘øøøØˆ
s   ¨C=D'Ä'D,c                 ó€   — |D ]:}t          j        |                      |¦  «        |f¦  «        }|| j        j        |<   Œ;dS )a  Flag these attribute names as being methods.
        Some objects do not correctly differentiate methods and
        properties, leading to problems when calling these methods.

        Specifically, trying to say: ob.SomeFunc()
        may yield an exception "None object is not callable"
        In this case, an attempt to fetch the *property* has worked
        and returned None, rather than indicating it is really a method.
        Calling: ob._FlagAsMethod("SomeFunc")
        should then allow this to work.
        N)r   ÚMapEntryÚ__AttrToID__rQ   rÂ   )rX   ÚmethodNamesrï   rr   s       r   Ú_FlagAsMethodzCDispatch._FlagAsMethod  sP   € ð  ð 	4ð 	4ˆDÝ”n T×%6Ò%6°tÑ%<Ô%<¸t¸gÑFÔFˆGØ,3ˆDŒNÔ# DÑ)Ð)ð	4ð 	4r   c                 óˆ   — t          d                     || j        ¦  «        ¦  «         | j                             d|¦  «        S )Nz>Calling GetIDsOfNames for property {} in Dispatch container {}r   )r   ÚformatrP   r   rÄ   r  s     r   r  zCDispatch.__AttrToID__  sH   € ÝØL×SÒSØ�d”oñô ñ	
ô 	
ð 	
ð
 Œ}×*Ò*¨1¨dÑ3Ô3Ð3r   c                 ó¤  — |dk    r‚	 t           j        t           j        z  }| j                             t           j        t          |dd¦  «        }n"# t           j        $ r t          d¦  «        ‚w xY w G d„ d¦  «        } ||¦  «        S | 	                    d¦  «        r$| 
                    d¦  «        rt          |¦  «        ‚	 t          | j        |         | ¦  «        S # t          $ r Y nw xY w|| j        j        v r|                      |¦  «        S d }| j        �r| j        rü| j        j                             |¦  «        }|€| j        j                             |¦  «        }|€º	 |                      |¦  «        rc|| j        j        v r|                      |¦  «        S | j        j                             |¦  «        }|€| j        j                             |¦  «        }|€)t+          j        |                      |¦  «        |f¦  «        }n# t           j        $ r Y nw xY w|�N	 | j        |j                 }t7          d|¦  «         |S # t          t          f$ r t7          d	|z  ¦  «         Y nw xY w|�Ét9          |t           j        ¦  «        }t7          d
|j        z  ¦  «         	 | j                             |j        d|d¦  «        }nO# t           j        $ r=}|j        t@          v r)|| j        j        |<   |                      |¦  «        cY d }~S ‚ d }~ww xY wt7          d|¦  «         |  !                    |¦  «        S t          | j"        › d|› �¦  «        ‚)NÚ__iter__r­   ri   z+This object can not function as an iteratorc                   ó   — e Zd Zd„ Zd„ ZdS )ú&CDispatch.__getattr__.<locals>.Factoryc                 ó   — || _         d S r'   )rÐ   )rX   rÐ   s     r   rY   z/CDispatch.__getattr__.<locals>.Factory.__init__.  s   € Ø �D”G�G�Gr   c                 óR   — dd l }|j        j                             | j        ¦  «        S r„   )Úwin32com.client.utilrì   r°   ÚIteratorrÐ   )rX   rë   s     r   rg   z/CDispatch.__getattr__.<locals>.Factory.__call__1  s)   € Ø/Ð/Ð/Ð/à#œ?Ô/×8Ò8¸¼ÑAÔAÐAr   N)Ú__name__Ú
__module__Ú__qualname__rY   rg   ri   r   r   ÚFactoryr'  -  s7   € € € € € ð!ð !ð !ðBð Bð Bð Bð Br   r/  Ú_zCached items has attribute!zAttribute %s not in cachez(Getting property Id 0x%x from OLE objectr   r   zOLE returned ú.)#r   r^   r_   r   r±   r²   ra   r8   r~   Ú
startswithÚendswithr   rS   rý   rQ   rÂ   rö   r  ÚgetrÃ   r  r   r  r  r   rR   re   r   r2   ÚINVOKE_PROPERTYGETrc   rp   rq   rb   rP   )	rX   rJ   r/   rµ   r/  ÚretEntryÚretr1   rr   s	            r   Ú__getattr__zCDispatch.__getattr__   sâ  € Ø�:ÒÐðTÝ#Ô3µiÔ6TÑT�Ø”}×0Ò0ÝÔ,­d°G¸XÀrñô ��øõ Ô&ð Tð Tð TÝ$Ð%RÑSÔSÐSðTøøøðBð Bð Bð Bð Bñ Bô Bð Bð �7˜4‘=”=Ð à�?Š?˜3ÑÔð 	' D§M¢M°#Ñ$6Ô$6ð 	'Ý  Ñ&Ô&Ð&ð	Ý˜dÔ1°$Ô7¸Ñ>Ô>Ð>øÝð 	ð 	ð 	ØˆDð	øøøð �4”>Ô*Ð*Ð*Ø×%Ò% dÑ+Ô+Ð+ð ˆØŒ>ñ 	˜dœmð 	à”~Ô-×1Ò1°$Ñ7Ô7ˆHØÐØœ>Ô4×8Ò8¸Ñ>Ô>�àÐð
Ø×'Ò'¨Ñ-Ô-ð KØ 4¤>Ô#:Ð:Ð:Ø#'×#5Ò#5°dÑ#;Ô#;Ð;Ø#'¤>Ô#9×#=Ò#=¸dÑ#CÔ#C˜Ø#Ð+Ø'+¤~Ô'@×'DÒ'DÀTÑ'JÔ'J˜HØÐ'Ý#(¤>°$×2CÒ2CÀDÑ2IÔ2IÈDÈ7Ñ#SÔ#S˜øøÝ Ô*ð ð ð Ø�Dðøøøð ÐðEØÔ+¨H¬OÔ<�Ý Ð!>ÀÑDÔDÐDØ�
øÝ�nÐ-ð Eð Eð EÝ Ð!<¸tÑ!CÑDÔDÐDÐDÐDðEøøøð ÐÝ,¨XµyÔ7SÑTÔTˆKÝØ:¸X¼_ÑLñô ð ðØ”m×*Ò*¨8¬?¸A¸{ÈAÑNÔN��øÝÔ&ð ð ð Ø”?Õ&8Ð8Ð8à4<�D”NÔ+¨DÑ1Ø×-Ò-¨dÑ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Øøøøøðøøøõ ˜_¨cÑ2Ô2Ð2Ø×)Ò)¨#Ñ.Ô.Ð.õ  ¤Ð8Ð8°$Ð8Ð8Ñ9Ô9Ð9sm   ˆAA ÁA.ÃC Ã
C+Ã*C+Å%7H	 ÆA+H	 È	HÈHÈ!#I É#I+É*I+Ê""K ËLË1LÌLÌLÌLc           	      óŠ  — || j         v r|| j         |<   d S t          d| j        › d|› d|›d�¦  «         | j        r¾|| j        j        v rQ| j        j        |         }t          |t          j        ¦  «        }| j         	                    |j
        d|d|¦  «         d S || j        j        v rQ| j        j        |         }t          |t          j        ¦  «        }| j         	                    |j
        d|d|¦  «         d S | j        �r©|                      |¦  «        r¾|| j        j        v rQ| j        j        |         }t          |t          j        ¦  «        }| j         	                    |j
        d|d|¦  «         d S || j        j        v rQ| j        j        |         }t          |t          j        ¦  «        }| j         	                    |j
        d|d|¦  «         d S 	 t          j        |                      |¦  «        |f¦  «        }n# t          j        $ r d }Y nw xY w|�’	 t          |t          j        ¦  «        }| j         	                    |j
        d|d|¦  «         || j        j        |<   t          d                     ||j
        | j        ¦  «        ¦  «         d S # t          j        $ r Y nw xY wt%          d| j        › d|› d�¦  «        ‚)	NzSetAttr called for r1  ú=z on DispatchContainerr   z<__setattr__ property {} (id=0x{:x}) in Dispatch container {}z
Property 'z' can not be set.)rW   r   rP   rQ   r  r2   r   ÚINVOKE_PROPERTYPUTr   rc   re   r  r  r   r  r  r8   r#  r~   )rX   rJ   Úvaluer0   r1   s        r   Ú__setattr__zCDispatch.__setattr__y  s
  € à�D”MÐ!Ð!ð #(ˆDŒM˜$ÑØˆFåØY $¤/ÐYÐY°DÐYÐY¸5ÐYÐYÐYñ	
ô 	
ð 	
ð Œ>ð 	à�t”~Ô-Ð-Ð-ØœÔ.¨tÔ4�Ý0°½	Ô8TÑUÔU�Ø”×$Ò$ U¤\°1°kÀ1ÀeÑLÔLÐLØ�à�t”~Ô0Ð0Ð0ØœÔ1°$Ô7�Ý0°½	Ô8TÑUÔU�Ø”×$Ò$ U¤\°1°kÀ1ÀeÑLÔLÐLØ�ð Œ=ñ %	Ø×Ò Ñ%Ô%ð à˜4œ>Ô1Ð1Ð1Ø œNÔ2°4Ô8�EÝ"4Ø�yÔ;ñ#ô #�Kð ”M×(Ò(¨¬°q¸+ÀqÈ%ÑPÔPÐPØ�Fà˜4œ>Ô4Ð4Ð4Ø œNÔ5°dÔ;�EÝ"4Ø�yÔ;ñ#ô #�Kð ”M×(Ò(¨¬°q¸+ÀqÈ%ÑPÔPÐPØ�FðÝœ t×'8Ò'8¸Ñ'>Ô'>ÀÀÑHÔH��øÝÔ&ð ð ð à���ðøøøð Ð ðÝ"4Ø�yÔ;ñ#ô #�Kð ”M×(Ò(¨¬°q¸+ÀqÈ%ÑPÔPÐPØ38�D”NÔ*¨4Ñ0Ý$ØV×]Ò]Ø  %¤,°´ñô ñô ð ð
 �FøÝ Ô*ð ð ð Ø�DðøøøåÐS¨$¬/ÐSÐS¸DÐSÐSÐSÑTÔTÐTs%   Ç)G? Ç?HÈHÈA:J ÊJ'Ê&J'rÁ   )!r,  r-  r.  rY   rg   rk   rn   rs   r‚   r|   r‡   r¢   r¥   r¨   r«   r¶   r¹   r¾   r]   rÎ   rÒ   rØ   rb   rö   rù   rÿ   r  r  r
  r!  r  r8  r=  ri   r   r   r5   r5   »   s  € € € € € ð
/ð 
/ð 
/ð 
/ðQð Qð Qð$ð ð ð
4ð 4ð 4ð#ð #ð #ð%ð %ð %ð ð  ð  ð2ð 2ð 2ð2&ð &ð &ð&ð &ð &ð$ð $ð $ðOð Oð Oð
)ð 
)ð 
)ðDð Dð Dð Qð Qð Qð&Rð Rð RðAð Að Að Øð	&ð &ð &ð &ðð ð ð ð5ð 5ð 5ð 5ð&ð ð ð8ð ð ð
'ð 
'ð 
'ð"ð "ð "ð&ð ð ð!ð !ð !ðF4ð 4ð 4ð 4ð 4ð 4ðW:ð W:ð W:ðrBUð BUð BUð BUð BUr   r5   )-Ú__doc__rí   Ú	itertoolsr   Útypesr   r   Úwin32com.clientrë   ÚwinerrorÚ
pywintypesr   r³   r   r   r   ra   ÚDISP_E_MEMBERNOTFOUNDÚDISP_E_BADPARAMCOUNTÚDISP_E_PARAMNOTOPTIONALÚDISP_E_TYPEMISMATCHÚE_INVALIDARGrq   r5  r;  ÚINVOKE_PROPERTYPUTREFÚINVOKE_FUNCr  r   r   ÚTypeIIDsr!   r   ÚIID_IUnknownrÔ   r(   r   ÚCLSCTX_SERVERr%   r*   r2   r>   r9   rM   r5   ri   r   r   ú<module>rN     s  ððð ð$ Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð à€	Ø€à
€ð Ô"ØÔ!ØÔ$ØÔ ØÔðÐ ð Ô ØÔ ØÔ#ØÔð	Ð ðð ð ðð ð ð Ô$ YÔ%<Ô=€ØÔ# IÔ$:Ô;€à˜7�^Ð ð (1Ô'>ð ð ð ð ð"	;ð 	;ð 	;ðð ð ð$ ØØØÔ"ðHð Hð Hð Hð6ð ð ð: ØØÔ"ð	
Bð 
Bð 
Bð 
Bð@Uð @Uð @Uð @Uð @Uñ @Uô @Uð @Uð @Uð @Ur   