<div dir="ltr"><div dir="ltr">Can we say that Pythons are "pining for the Fjords"?</div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Mon, 28 Jul 2025 at 15:22, Robin Becker <<a href="mailto:robin@reportlab.com">robin@reportlab.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi Marius, I believe Python 3.8 is now EOL and 3.9 is soon to follow.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 28 Jul 2025 at 12:00, Marius Gedminas <<a href="mailto:marius@gedmin.as" target="_blank">marius@gedmin.as</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Sun, Jun 29, 2025 at 08:13:59PM -0400, Martin Renters via reportlab-users rašė:<br>
>   File "//opt/dftoolkit/lib/python3.9/site-packages/reportlab/pdfbase/<br>
> pdfdoc.py", line 137, in __init__<br>
> <br>
>     sig = self.signature = md5()<br>
> <br>
> ValueError: [digital envelope routines] unsupported<br>
> <br>
> Most of the uses of MD5, aside from the use in the actual PDF encryption,<br>
> appear not to be security related. In Python 3.9, the hashlib functions can be<br>
> passed a keyword argument called ‘usedforsecurity’ (defaulting to True) that<br>
> can be set to False if the hash algorithm isn’t used for security purposes.<br>
> This allows the use of MD5 hashes even on FIPS enabled systems and allows<br>
> ReportLab to successfully generate PDFs. Passing this keyword argument on the<br>
> older Python 3.6.8 doesn’t cause any ill effects.<br>
<br>
Meanwhile Python 3.8.18 complains:<br>
<br>
  TypeError: 'usedforsecurity' is an invalid keyword argument for openssl_md5()<br>
<br>
in /opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/reportlab/pdfbase/pdfdoc.py line 137, which is<br>
<br>
  sig = self.signature = md5(usedforsecurity=False)<br>
<br>
(I'm translating pytest's default rich traceback that dumps the source<br>
of the entire PDFDocument.__init__ into something that can be pasted<br>
into an email.)<br>
<br>
Is Python 3.8 still supported?  <a href="https://pypi.org/project/reportlab/" rel="noreferrer" target="_blank">https://pypi.org/project/reportlab/</a> says<br>
both<br>
<br>
   Requires: Python <4, >=3.7 <br>
<br>
and also omits 3.8 from the classifiers, which is a bit ambiguous.<br>
<br>
Oh, I see 3.8 is EOL upstream, so I suppose I'll just drop it from my<br>
test matrix.<br>
<br>
Marius Gedminas<br>
-- <br>
I used to (somewhat) sneer at people who describe themselves thus: "I program<br>
HTML". Then I tried to make a web-site look as I wanted it to (ie. not<br>
grotesquely ugly), wow - perhaps they were onto something. Some think there is<br>
a pile of broken mess in our desktop, but at least you know where you are with<br>
a GtkHBox.<br>
                -- Michael Meeks<br>
_______________________________________________<br>
reportlab-users mailing list<br>
<a href="mailto:reportlab-users@lists2.reportlab.com" target="_blank">reportlab-users@lists2.reportlab.com</a><br>
<a href="https://pairlist2.pair.net/mailman/listinfo/reportlab-users" rel="noreferrer" target="_blank">https://pairlist2.pair.net/mailman/listinfo/reportlab-users</a><br>
</blockquote></div><div><br clear="all"></div><br><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature">Robin Becker<br></div>
_______________________________________________<br>
reportlab-users mailing list<br>
<a href="mailto:reportlab-users@lists2.reportlab.com" target="_blank">reportlab-users@lists2.reportlab.com</a><br>
<a href="https://pairlist2.pair.net/mailman/listinfo/reportlab-users" rel="noreferrer" target="_blank">https://pairlist2.pair.net/mailman/listinfo/reportlab-users</a><br>
</blockquote></div><div><br clear="all"></div><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr">Andy Robinson<br>Managing Director, ReportLab<br><br></div></div></div>