a „oe ã@sbdZddlZddlmZmZejejZd dd„ZGdd„dƒZ Gdd „d e ƒZ Gd d „d ƒZ dS) zŠGeneral client side utilities. This module contains utility functions, used primarily by advanced COM programmers, or other COM modules. éN)ÚDispatchÚ_get_good_object_cCs*t|ƒtjtjkr | tj¡}t||ƒS)zÎWrap an object in a VARIANT enumerator. All VT_DISPATCHs returned by the enumerator are converted to wrapper objects (which may be either a class instance, or a dynamic.Dispatch type object). )ÚtypeÚ pythoncomÚTypeIIDsÚIID_IEnumVARIANTÚQueryInterfaceÚ EnumVARIANT)ÚobÚ resultCLSID©r ú5C:\Program Files\Certbot\pkgs\win32com\client\util.pyÚWrapEnum s rc@sReZdZdZdd„Zdd„Zdd„Zdd „Zdd d „Zd d„Z dd„Z dd„Z dS)Ú Enumeratora›A class that provides indexed access into an Enumerator By wrapping a PyIEnum* object in this class, you can perform natural looping and indexing into the Enumerator. Looping is very efficient, but it should be noted that although random access is supported, the underlying object is still an enumerator, so this will force many reset-and-seek operations to find the requested index. cCs||_d|_dS)Néÿÿÿÿ)Ú_oleobj_Úindex)ÚselfÚenumr r r Ú__init__$szEnumerator.__init__cCs | |¡S©N©Ú_Enumerator__GetIndex©rrr r r Ú __getitem__(szEnumerator.__getitem__cCs | |¡Srrrr r r Ú__call__+szEnumerator.__call__cCstt|ƒtdƒkrtdƒ‚||jdkr@|j ¡|r@|j |¡||_|j d¡}t|ƒrh| |d¡St dƒ‚dS)Nrz2Only integer indexes are supported for enumeratorsézlist index out of range) rÚ TypeErrorrrÚResetZSkipÚNextÚlenÚ _make_retval_Ú IndexError)rrÚresultr r r Z __GetIndex.s ÿ zEnumerator.__GetIndexrcCs2|j |¡}g}|D]}| | |¡¡qt|ƒSr)rrÚappendr!Útuple)rÚcountÚretZrealRetsÚrr r r rCs  zEnumerator.NextcCs |j ¡Sr)rr©rr r r rJszEnumerator.ResetcCs| |j ¡|j¡Sr)Ú __class__rÚCloner r)r r r r+MszEnumerator.ClonecCs|Srr ©rr#r r r r!PszEnumerator._make_retval_N)r) Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrrrrr+r!r r r r rs  rc@seZdZddd„Zdd„ZdS)r NcCs||_t ||¡dSr)r rr©rrr r r r rUszEnumVARIANT.__init__cCst||jd�S©N)r )rr r,r r r r!YszEnumVARIANT._make_retval_)N)r-r.r/rr!r r r r r Ts r c@s&eZdZddd„Zdd„Zdd„ZdS) ÚIteratorNcCs||_t| tj¡ƒ|_dSr)r ÚiterrrrÚ_iter_r1r r r r^szIterator.__init__cCs|Srr r)r r r Ú__iter__bszIterator.__iter__cCstt|jƒ|jd�Sr2)rÚnextr5r r)r r r Ú__next__eszIterator.__next__)N)r-r.r/rr6r8r r r r r3]s r3)N) r0rZwin32com.clientrrrZ IID_IDispatchZPyIDispatchTyperrr r3r r r r Ús  <