IndexError exception in platypus.paraparser

Germán M. Bravo <[email protected]>
Newsgroups gmane.comp.python.reportlab.user
Message-ID <CA+98EDkn2WoHbf3=WoGDOTRBC1rFivFMQV1+RDQtkWeQmEBnPQ@mail.gmail.com>
I'm working with ReportLab in a threaded environment and I've been getting
a weird exception about IndexError when doing some operations such as
_pop() during platypus.paraparser.ParaParser.end_br(). I think I've tracked
the error down the fact _stack is a member of the TTParser instance (using
rml2pdf).

After googling around, I found a place where the source code of rml2pdf
shows this:

class TTParagraphMixin:
    _CLEAN_SPACE = 0
    _parser = TTParser()
    ...

Then, doing:

from rlextra.rml2pdf import rml2pdf
print(repr(rml2pdf.TTParagraphMixin._parser))

confirms TTParser is an instance: <rlextra.rml2pdf.rml2pdf.TTParser
instance at 0x1053eae18>

This means TTParser instance there is an instance placed as a property of
TTParagraphMixin at class level (which means it's shared by all instances
of TTParagraph, TTXPreformatted and others) ...but (at least)
TTParser._stack could be modified by several threads at the same time
(causing the aforesaid exception to raise from time to time).
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.