Reportlab / platypus bug?
Dennis Lee Bieber
wlfraed at ix.netcom.com
Sun Mar 13 21:26:37 EDT 2022
On Sun, 13 Mar 2022 21:55:36 +0100, Les <nagylzs at gmail.com> declaimed the
following:
>It is hard to explain as it is, but something even more interesting happens
>if you try to make them totally independent, and create a copy of the story
>as well:
>
>import copy
>doc = SimpleDocTemplate("phello.pdf")
>doc.build(copy.copy(Story), onFirstPage=myFirstPage, onLaterPages=myLaterPages)
>doc = SimpleDocTemplate("phello2.pdf")
>doc.build(copy.copy(Story), onFirstPage=myFirstPage, onLaterPages=myLaterPages)
>
Note that copy.copy() is a SHALLOW copy (ie; only the top level objects
are copied, anything those objects contain are still shared). Try
copy.deepcopy()
https://docs.python.org/3/library/copy.html
"""
The difference between shallow and deep copying is only relevant for
compound objects (objects that contain other objects, like lists or class
instances):
A shallow copy constructs a new compound object and then (to the extent
possible) inserts references into it to the objects found in the original.
A deep copy constructs a new compound object and then, recursively,
inserts copies into it of the objects found in the original.
"""
My hypothesis is that rendering the "story" results in changes to the
contained objects (possibly they are even "consumed" as they are rendered
-- so you first attempt ends up passing an empty "story" for the second
PDF).
--
Wulfraed Dennis Lee Bieber AF6VN
wlfraed at ix.netcom.com http://wlfraed.microdiversity.freeddns.org/
More information about the Python-list
mailing list