How to increase PythonWin v2.0: COM browser limits?

Twan van der Schoot twanvds at
Wed Mar 21 23:04:50 CET 2001

Hi Ben,

It's great to see that a good explaination has been found.

And although I just barely grasp the meaning of your diagnosis, I wonder how
to repair it without causing a 'domino-effect'.  As my in-depth knowledge of
Pythonwin and the Python support for win32 is probably not sufficient to
oversee this.

What to say about informing Mark Hammond about this?

thanks again,


"Ben Hutchings" <ben.hutchings at> wrote in message
news:uhf0o6ptw.fsf at
> I wrote:
> > The wrapper for COM enumerators, in true Pythonic style, does not
> > check the size of the collection in advance, but attempts to read
> > items until this yields an error.  I think that the category
> > enumerator implementation is reporting the no-more-items error in the
> > wrong way (returning E_OUTOFMEMORY rather than S_FALSE), so the
> > wrapper does not translate it into an IndexError exception which
> > would cause the loop to terminate successfully.  OLEView probably
> > just doesn't check for the error but displays what it already got.
> Let me revise that:
> A Python iterator for a COM 'container' is an instance of
> win32com.client.util.Enumerator, which wraps a PyIEnumVARIANT object
> that in turn wraps an IEnumVARIANT interface pointer obtained from the
> container.  When an IEnumVARIANT user requests more items than there
> are left, the implementation should return any items that are left,
> with a status code of S_FALSE (not an error code).
> In the case of iteration, Enumerator will request only 1 item each
> time.  PyIEnumVARIANT's wrapper function returns a list of items,
> which at the end of iteration will have length 0.  Enumerator checks
> for this case and throws an IndexError when it occurs, which is the
> normal way for iteration to end.  Unfortunately it appears that this
> specific implementation of IEnumVARIANT returns a status code of
> E_OUTOFMEMORY (an error code), which PyIEnumVARIANT turns into a
> win32types.com_error exception.
> OLEView probably treats this error in the same way as a normal end
> of enumeration, and displays the results it already obtained.
> --
> Any opinions expressed are my own and not necessarily those of Roundpoint.

More information about the Python-list mailing list