[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    Re: PyQt from py27 to py38
From:       Nicola Raffo <nicola.raffo () rulex ! ai>
Date:       2021-10-27 9:19:48
Message-ID: DM6PR19MB255594D5DE1948080089688DFE859 () DM6PR19MB2555 ! namprd19 ! prod ! outlook ! com
[Download RAW message or body]

Hi Damien,

I have tried something similar in the past days but it seems not working to directly convert \
objects from PyQt4->PyQt5.

However, it has some good tips that I could partially use.

Thank you for you help.

Nicola
________________________________
From: Damien Elmes <pyqt@ankiweb.net>
Sent: 27 October 2021 09:55
Cc: pyqt <pyqt@riverbankcomputing.com>
Subject: Re: PyQt from py27 to py38

Here is an example of how we do it for PyQt5→PyQt6:

https://github.com/ankitects/anki/blob/036d04a7b1514fde0018280a79e98066275dae9c/qt/aqt/profiles. \
py#L159<https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fankitects \
%2Fanki%2Fblob%2F036d04a7b1514fde0018280a79e98066275dae9c%2Fqt%2Faqt%2Fprofiles.py%23L159&data=0 \
4%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf154d430fade0c36c8a \
f22d19%7C0%7C0%7C637709181878857049%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIi \
LCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=CruPvq4y86AOAUW%2BQQSdroPgWNRC2yJ6q%2FNQ6h%2FP6ws%3D&reserved=0>


You might be able to adapt it for PyQt4 as well. In our case we were incorrectly storing the \
pickled data back in the Python 2 days, so couldn't safely bring it into PyQt5.

On Wed, Oct 27, 2021 at 3:07 AM Tomas Sobota <tom@sobota.net<mailto:tom@sobota.net>> wrote:
A couple of ideas here:
https://stackoverflow.com/questions/54047757/unpickle-binary-file-to-text/54048296#54048296<http \
s://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstackoverflow.com%2Fquestions%2F54 \
047757%2Funpickle-binary-file-to-text%2F54048296%2354048296&data=04%7C01%7Cnicola.raffo%40rulex. \
ai%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C6377091818788 \
57049%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=hETVSCuk%2BbQ994nx30wq2Xoq2XfH%2FVBbfIEMPsB5e94%3D&reserved=0>
 Maybe you could take it from there?
Tom

On Tue, Oct 26, 2021 at 6:12 PM RoadrunnerWMC \
<roadrunnerwmc@gmail.com<mailto:roadrunnerwmc@gmail.com>> wrote: (Just adding this to the \
mailing list, if you don't mind)

---------- Forwarded message ---------
From: Nicola Raffo <nicola.raffo@rulex.ai<mailto:nicola.raffo@rulex.ai>>
Date: Tue, Oct 26, 2021 at 11:15 AM
Subject: Re: PyQt from py27 to py38
To: RoadrunnerWMC <roadrunnerwmc@gmail.com<mailto:roadrunnerwmc@gmail.com>>


Similar scenario here, I have to deal with some data stored with pickled PyQt4 objects. The \
pickletools method can be useful to "read" the pickled data, but I need a conversion from PyQt4 \
to PyQt5 data in order to be able to load the data in Python 3.8 and whitout a proper method to \
do it I can't depickle data in Python 3.8.

Another idea could be to use the previous version of the code which still uses python 2.7 and \
to store them in another format, but this could take a long time.

What I need is a tool that allows me to automatically read and open these data in Python 3.8
________________________________
From: RoadrunnerWMC <roadrunnerwmc@gmail.com<mailto:roadrunnerwmc@gmail.com>>
Sent: 26 October 2021 17:06
To: Florian Bruhin <me@the-compiler.org<mailto:me@the-compiler.org>>
Cc: pyqt@riverbankcomputing.com<mailto:pyqt@riverbankcomputing.com> \
                <pyqt@riverbankcomputing.com<mailto:pyqt@riverbankcomputing.com>>
Subject: Re: PyQt from py27 to py38

The pickletools method is at least doable for relatively simple pickles -- I have an \
application that does exactly that because another developer made the less-than-wise decision \
to store pickled PyQt4 objects in user data files a long time ago, and now I have to support \
reading them forever. The main downside is that you have to make a lot of assumptions about the \
structure of the pickle data, ones which technically don't need to always be true, but should \
nevertheless be safe if your users are all using CPython and not manually messing with the \
generated pickle data for some reason.

There is another option, too, which is to make a minimal fake "PyQt4" interface (just a few \
nearly-empty class stubs) and have pickle load using that. I chose the pickletools method \
because of the additional security benefits of avoiding using pickle.loads() on untrusted user \
data files.

On Tue, Oct 26, 2021 at 8:58 AM Florian Bruhin \
<me@the-compiler.org<mailto:me@the-compiler.org>> wrote: On Tue, Oct 26, 2021 at 11:47:40AM \
+0200, Florian Bruhin wrote:
> The harder way is to somehow coerce pickle into giving you the "raw"
> data without the PyQt object involved...

I just learned there's 'pickletools' in the stdlib:
https://docs.python.org/3/library/pickletools.html<https://nam12.safelinks.protection.outlook.co \
m/?url=https%3A%2F%2Fdocs.python.org%2F3%2Flibrary%2Fpickletools.html&data=04%7C01%7Cnicola.raff \
o%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637 \
709181878867044%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJX \
VCI6Mn0%3D%7C1000&sdata=XBl32YTRlfQSlM2zI6c2qGqc%2FLfctm92RrxqJWusYeI%3D&reserved=0>

Using that, you could inspect the pickle manually and pick the data out
of it somehow. Given how pickles are structured, not exactly
straightfoward either, though.

Florian

--
            me@the-compiler.org<mailto:me@the-compiler.org> | \
https://www.qutebrowser.org<https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fww \
w.qutebrowser.org%2F&data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7 \
Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637709181878877034%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiM \
C4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Z5Y3EddE%2Fd73B632%2B8GFwboO62ojuptRgOIYETQwTYc%3D&reserved=0>
  https://bruhin.software/<https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbru \
hin.software%2F&data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c \
9caf154d430fade0c36c8af22d19%7C0%7C0%7C637709181878877034%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLj \
AwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=AWr4a40iUhdZnIUDJv1AZc95Cfb16TP3ABT0SjMNNT4%3D&reserved=0> \
| https://github.com/sponsors/The-Compiler/<https://nam12.safelinks.protection.outlook.com/?url= \
https%3A%2F%2Fgithub.com%2Fsponsors%2FThe-Compiler%2F&data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1 \
f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637709181878887033% \
7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=irlg32UwQ1qfLfECWBe1T%2FrL18517s62XJLppL48Gtk%3D&reserved=0>
  GPG: 916E B0C8 FD55 A072 | \
https://the-compiler.org/pubkey.asc<https://nam12.safelinks.protection.outlook.com/?url=https%3A \
%2F%2Fthe-compiler.org%2Fpubkey.asc&data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d \
508d9991f45ef%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637709181878887033%7CUnknown%7CTWFpbG \
Zsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=lI5oMnsbTpxNj%2FkHcSCw4GqMDOe8CKfwHqZ02q2Pz%2F8%3D&reserved=0>
  I love long mails! | \
https://email.is-not-s.ms/<https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fema \
il.is-not-s.ms%2F&data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb \
4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637709181878897026%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4w \
LjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=NP9IOnKXjUYp5sfjOBeAWvcjiYq9oONcniW5frUJqvo%3D&reserved=0>


--

Nicola Raffo

Senior Product Development Specialist

RuleX<https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Frulex.ai%2F&data=04%7C01 \
%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf154d430fade0c36c8af22d19 \
%7C0%7C0%7C637709181878897026%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTi \
I6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=6R9KjNgLmAqfdQuV1pFWcjQ1Do%2Ft5f%2FkOovyt1MfhQ8%3D&reserved=0>


+39 010 8050 190

PLEASE NOTE: This e-mail and any attachments may be confidential or privileged and is intended \
solely for the addressee(s). Do not share or use without Rulex's approval. If received in \
error, please contact the sender and delete the email and any attachments.


[Attachment #3 (text/html)]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-2022-jp">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, \
0, 0);"> Hi Damien,</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, \
0, 0);"> <br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, \
0, 0);"> I have tried something similar in the past days but it seems not working to directly \
convert objects from PyQt4-&gt;PyQt5.</div> <div style="font-family: Calibri, Arial, Helvetica, \
sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"> <br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, \
0, 0);"> However, it has some good tips that I could partially use.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, \
0, 0);"> <br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, \
0, 0);"> Thank you for you help.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, \
0, 0);"> <br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, \
0, 0);"> Nicola</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" \
color="#000000"><b>From:</b> Damien Elmes &lt;pyqt@ankiweb.net&gt;<br> <b>Sent:</b> 27 October \
2021 09:55<br> <b>Cc:</b> pyqt &lt;pyqt@riverbankcomputing.com&gt;<br>
<b>Subject:</b> Re: PyQt from py27 to py38</font>
<div>&nbsp;</div>
</div>
<div>
<div dir="ltr">Here is an example of how we do it for PyQt5→PyQt6:
<div><br>
</div>
<div><a href="https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fank \
itects%2Fanki%2Fblob%2F036d04a7b1514fde0018280a79e98066275dae9c%2Fqt%2Faqt%2Fprofiles.py%23L159& \
amp;data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf154d430f \
ade0c36c8af22d19%7C0%7C0%7C637709181878857049%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIj \
oiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=CruPvq4y86AOAUW%2BQQSdroPgWNRC2yJ6q%2FNQ6h%2FP6ws%3D&amp;reserved=0" \
originalsrc="https://github.com/ankitects/anki/blob/036d04a7b1514fde0018280a79e98066275dae9c/qt/aqt/profiles.py#L159" \
shash="qF6afMfluntOUOneGmNjTROMgi9fjclk31pq+24iXpzxT1LEbyAMjxhkfNHg6JXfaVmiN9vYCdDIQrZ53HXJyuMyA \
oRua4qmlWRhhkUg4GczCnd8dr3JcaUBaVip7wJ6NQlQ9fHk8cOUO77Z4lLd76e1Y2zBHw+JD3A6HNtjoVY=" \
target="_blank">https://github.com/ankitects/anki/blob/036d04a7b1514fde0018280a79e98066275dae9c/qt/aqt/profiles.py#L159</a><br>
 </div>
<div><br>
</div>
<div>You might be able to adapt it for PyQt4 as well. In our case we were incorrectly storing \
the pickled data back in the Python 2 days, so couldn't safely bring it into PyQt5.</div> \
</div> <br>
<div class="x_gmail_quote">
<div dir="ltr" class="x_gmail_attr">On Wed, Oct 27, 2021 at 3:07 AM Tomas Sobota &lt;<a \
href="mailto:tom@sobota.net">tom@sobota.net</a>&gt; wrote:<br> </div>
<blockquote class="x_gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid \
rgb(204,204,204); padding-left:1ex"> <div dir="ltr">
<div class="x_gmail_default" style="font-family:georgia,serif"><font size="2">A couple of ideas \
here:<br> </font></div>
<div class="x_gmail_default" style="font-family:georgia,serif"><font size="2"><a \
href="https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstackoverflow.com%2Fques \
tions%2F54047757%2Funpickle-binary-file-to-text%2F54048296%2354048296&amp;data=04%7C01%7Cnicola. \
raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7 \
C637709181878857049%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwi \
LCJXVCI6Mn0%3D%7C1000&amp;sdata=hETVSCuk%2BbQ994nx30wq2Xoq2XfH%2FVBbfIEMPsB5e94%3D&amp;reserved=0" \
originalsrc="https://stackoverflow.com/questions/54047757/unpickle-binary-file-to-text/54048296#54048296" \
shash="KldQc1v5EQdHtvOG6Krex1YifsM9vC6lPvN4MILp+H6cWgzRZlmfLGeqh8emF4t5CkmheB4ePjJVAH5xcnIl5U9av \
oOHGNY53zYBMSR/AKceYu6LZeCBMbTv1dai6j3q0PiLt8EmsRPzna3EAUPg+nsE3WpnTOOHjIOp2t0uIGQ=" \
target="_blank">https://stackoverflow.com/questions/54047757/unpickle-binary-file-to-text/54048296#54048296</a></font></div>
 <div class="x_gmail_default" style="font-family:georgia,serif"><font size="2">Maybe you could \
take it from there? <br>
</font></div>
<div class="x_gmail_default" style="font-family:georgia,serif; font-size:large"><font \
size="2">Tom</font><br> </div>
</div>
<br>
<div class="x_gmail_quote">
<div dir="ltr" class="x_gmail_attr">On Tue, Oct 26, 2021 at 6:12 PM RoadrunnerWMC &lt;<a \
href="mailto:roadrunnerwmc@gmail.com" target="_blank">roadrunnerwmc@gmail.com</a>&gt; \
wrote:<br> </div>
<blockquote class="x_gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid \
rgb(204,204,204); padding-left:1ex"> <div dir="ltr">(Just adding this to the mailing list, if \
you don't mind)<br> <br>
<div class="x_gmail_quote">
<div dir="ltr" class="x_gmail_attr">---------- Forwarded message ---------<br>
From: <strong class="x_gmail_sendername" dir="auto">Nicola Raffo</strong> <span dir="auto">
&lt;<a href="mailto:nicola.raffo@rulex.ai" \
                target="_blank">nicola.raffo@rulex.ai</a>&gt;</span><br>
Date: Tue, Oct 26, 2021 at 11:15 AM<br>
Subject: Re: PyQt from py27 to py38<br>
To: RoadrunnerWMC &lt;<a href="mailto:roadrunnerwmc@gmail.com" \
target="_blank">roadrunnerwmc@gmail.com</a>&gt;<br> </div>
<br>
<br>
<div dir="ltr">
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
Similar scenario here, I have to deal with some data stored with pickled PyQt4 objects. The \
pickletools method can be useful to &quot;read&quot; the pickled data, but I need a conversion \
from PyQt4 to PyQt5 data in order to be able to load the data in Python 3.8 and  whitout a \
proper method to do it I can't depickle data in Python 3.8.</div> <div \
style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)"> <br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
Another idea could be to use the previous version of the code which still uses python 2.7 and \
to store them in another format, but this could take a long time.</div> <div \
style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)"> <br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
What I need is a tool that allows me to automatically read and open these data in Python \
3.8</div> <div id="x_gmail-m_-5315984894876927095gmail-m_-5768338421949475074m_-7604932747331470930m_7624132110726387732appendonsend">
 </div>
<hr style="display:inline-block; width:98%">
<div id="x_gmail-m_-5315984894876927095gmail-m_-5768338421949475074m_-7604932747331470930m_7624132110726387732divRplyFwdMsg" \
dir="ltr"> <font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> \
RoadrunnerWMC &lt;<a href="mailto:roadrunnerwmc@gmail.com" \
target="_blank">roadrunnerwmc@gmail.com</a>&gt;<br> <b>Sent:</b> 26 October 2021 17:06<br>
<b>To:</b> Florian Bruhin &lt;<a href="mailto:me@the-compiler.org" \
target="_blank">me@the-compiler.org</a>&gt;<br> <b>Cc:</b> <a \
href="mailto:pyqt@riverbankcomputing.com" target="_blank">pyqt@riverbankcomputing.com</a> \
&lt;<a href="mailto:pyqt@riverbankcomputing.com" \
target="_blank">pyqt@riverbankcomputing.com</a>&gt;<br> <b>Subject:</b> Re: PyQt from py27 to \
py38</font> <div>&nbsp;</div>
</div>
<div>
<div dir="ltr">The pickletools method&nbsp;is at least doable for relatively simple pickles -- \
I have an application that does exactly that because another developer made the less-than-wise \
decision to store pickled PyQt4 objects in user data files a long time ago,  and now I have to \
support reading them forever. The main downside is that you have to make a lot of assumptions \
about the structure of the pickle data, ones which technically don't <i>need</i>&nbsp;to always \
be true, but <i>should</i>&nbsp;nevertheless be safe if your users are all using CPython and \
not manually messing with the generated pickle data for some reason. <div><br>
</div>
<div>There is another option, too, which is to make a minimal fake &quot;PyQt4&quot; interface \
(just a few nearly-empty class stubs) and have pickle load using that. I chose the pickletools \
method because of the additional security benefits of avoiding using&nbsp;<font \
face="monospace">pickle.loads()</font>  on untrusted user data files.</div>
</div>
<br>
<div>
<div dir="ltr">On Tue, Oct 26, 2021 at 8:58 AM Florian Bruhin &lt;<a \
href="mailto:me@the-compiler.org" target="_blank">me@the-compiler.org</a>&gt; wrote:<br> </div>
<blockquote style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); \
padding-left:1ex"> On Tue, Oct 26, 2021 at 11:47:40AM +0200, Florian Bruhin wrote:<br>
&gt; The harder way is to somehow coerce pickle into giving you the &quot;raw&quot;<br>
&gt; data without the PyQt object involved...<br>
<br>
I just learned there's 'pickletools' in the stdlib:<br>
<a href="https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.python.org%2F3%2 \
Flibrary%2Fpickletools.html&amp;data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d \
9991f45ef%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637709181878867044%7CUnknown%7CTWFpbGZsb3 \
d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=XBl32YTRlfQSlM2zI6c2qGqc%2FLfctm92RrxqJWusYeI%3D&amp;reserved=0" \
originalsrc="https://docs.python.org/3/library/pickletools.html" \
shash="DN02p758OXHOo1XfJQ/VytE9gae6WGpcnLtH9q6dkQVedZHaG8KQClGunm5G1AeRbgsihdyv9u3CUT71bp7OHTBpg \
sS1WhOzhux4idJqb3caLZnCunRVNUqKw6vDClz/x+jsO7ZLd09gp/Q0aP+whKvukfCjHISNh70xZ4H54Fw=" \
rel="noreferrer" target="_blank">https://docs.python.org/3/library/pickletools.html</a><br> \
<br> Using that, you could inspect the pickle manually and pick the data out<br>
of it somehow. Given how pickles are structured, not exactly<br>
straightfoward either, though.<br>
<br>
Florian<br>
<br>
-- <br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="mailto:me@the-compiler.org" \
target="_blank">me@the-compiler.org</a> | <a \
href="https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.qutebrowser.org%2F&a \
mp;data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf154d430fa \
de0c36c8af22d19%7C0%7C0%7C637709181878877034%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjo \
iV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=Z5Y3EddE%2Fd73B632%2B8GFwboO62ojuptRgOIYETQwTYc%3D&amp;reserved=0" \
originalsrc="https://www.qutebrowser.org/" \
shash="bNPbD1tOIgokWO1Gtz2P6j/Q3lmPfAAhN7lwqXdhX1VKjozPnUjmJfZ1UDSGu7oGOm2gOUv4JaHd7jutb7dl0o3n6 \
rGOlK3O80AFsc+y2EBLebdERp6PwVTtD6xQiuckuC2ZnssU5btHtN52yiNLjmC77PDiN/NihvTOtPIUjHM=" \
rel="noreferrer" target="_blank"> https://www.qutebrowser.org</a> <br>
&nbsp; &nbsp; &nbsp; &nbsp;<a \
href="https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbruhin.software%2F&amp;d \
ata=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf154d430fade0c \
36c8af22d19%7C0%7C0%7C637709181878877034%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2l \
uMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=AWr4a40iUhdZnIUDJv1AZc95Cfb16TP3ABT0SjMNNT4%3D&amp;reserved=0" \
originalsrc="https://bruhin.software/" \
shash="ze5APoJenXSXCX/1sBtNbkr1abvKqCmzdrFmDAaKPFhCtcLy5u+6S88qi8mokBxj5I5oIYP/5DULTl7CMtgV55rS2 \
k/0zKm63FUHuwgm+l3hoqo3fbVz1nyiiZBAdapIjbQa87Ahuu2HL/dKDGMSEBpvFoLzieswYkZtgMGZdeI=" \
rel="noreferrer" target="_blank">https://bruhin.software/</a>  | <a \
href="https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fsponsors%2F \
The-Compiler%2F&amp;data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7C \
cb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637709181878887033%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC \
4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=irlg32UwQ1qfLfECWBe1T%2FrL18517s62XJLppL48Gtk%3D&amp;reserved=0" \
originalsrc="https://github.com/sponsors/The-Compiler/" \
shash="P4WvhDJw+RJYYs9rcPtz0N4NfkCW8lvYOdfago5FA2pBCozeg0UbVP5unGPpsjER/EQlpKZsIf+D/X8T1VR8jydvc \
fRJSM5gUwTcPnflBldWq0CpIVgntcmKoFw32+wKMKqWg1/f5glKGdyGEaaZouvZRA4jv6tBTlZ5vZdIYr4=" \
rel="noreferrer" target="_blank"> https://github.com/sponsors/The-Compiler/</a><br>
&nbsp; &nbsp; &nbsp; &nbsp;GPG: 916E B0C8 FD55 A072 | <a \
href="https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fthe-compiler.org%2Fpubke \
y.asc&amp;data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf15 \
4d430fade0c36c8af22d19%7C0%7C0%7C637709181878887033%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAi \
LCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=lI5oMnsbTpxNj%2FkHcSCw4GqMDOe8CKfwHqZ02q2Pz%2F8%3D&amp;reserved=0" \
originalsrc="https://the-compiler.org/pubkey.asc" \
shash="J4OMgM6BigDQMsqKswhgjXsC6popQnCZ3Kky1CXAh4fy2Bl4BcLEB5wFX1w4SxMAa4BU+WytlxAkU/5UFqtDkaLFt \
3G2DZ6wJIehVijy0Lpbm77TFMkofv0utpadLxtYUGvPwMnHIdAFUtfHFUF1p6l2jDM+eD/6o3uf69XHPb0=" \
rel="noreferrer" target="_blank"> https://the-compiler.org/pubkey.asc</a><br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;I love long mails! | <a \
href="https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Femail.is-not-s.ms%2F&amp \
;data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf154d430fade \
0c36c8af22d19%7C0%7C0%7C637709181878897026%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV \
2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=NP9IOnKXjUYp5sfjOBeAWvcjiYq9oONcniW5frUJqvo%3D&amp;reserved=0" \
originalsrc="https://email.is-not-s.ms/" \
shash="hOraeL/t9LmFgXRi1KXDXJGmPBibKr2nsjFl+gFl51Q3ZdjoGsIb6i3YEDFgaoQxCVwu+lfwo3fQebYXJBTx/KgYT \
GpGbc633l2YwVV58LbbXvqGFiKzhi09/6WXQL8t4ZzKC1pVlTVR58KZgohWGBqJm3aXvhnuTvOeQ+q5j/s=" \
rel="noreferrer" target="_blank"> https://email.is-not-s.ms/</a><br>
</blockquote>
</div>
</div>
<p style="margin:0px 0px 0px 10px; font-size:10pt; font-family:Verdana">--</p>
<p style="margin:3px 0px 0px 10px; font-size:10pt; font-family:Verdana"><strong>Nicola \
Raffo</strong></p> <p style="margin:3px 0px 0px 10px; font-size:10pt; \
font-family:Verdana">Senior Product Development Specialist</p> <p style="margin:10px 0px 0px \
10px; font-size:18pt; font-family:Verdana"><a \
href="https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Frulex.ai%2F&amp;data=04% \
7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf154d430fade0c36c8af2 \
2d19%7C0%7C0%7C637709181878897026%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLC \
JBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=6R9KjNgLmAqfdQuV1pFWcjQ1Do%2Ft5f%2FkOovyt1MfhQ8%3D&amp;reserved=0" \
originalsrc="https://rulex.ai/" \
shash="zxX+IF3YET3aGcT8JMH9XkZsC86VnJLqEMiWmLGB6CBexm/bTbMhAm8TBzOU0QRZbLmm5nBtulKnJ23wqePU/svpU \
DNZhWoqQZRi5sXtRJj931QXB0ObSKMZi7xvfnaCjmh3fo3szHmP7zTWsxSK1O8MWzsvziIdLoGnN2ODTLU=" \
target="_blank" style="text-decoration:none"><span style="color:rgb(0,115,198); \
font-weight:bold">Rule</span><span style="color:rgb(101,217,142); \
font-weight:bold">X</span></a></p> <p style="margin:10px 0px 0px 10px; font-size:7.5pt; \
font-family:Verdana">+39 010 8050 190<br> </p>
<p style="margin:3px 0px 0px 10px; font-size:7.5pt; font-family:Verdana"><a></a></p>
<p style="margin:10px 0px 0px 10px; font-size:7.5pt; width:400px; text-align:justify; \
font-family:Verdana"> PLEASE NOTE: This e-mail and any attachments may be confidential or \
privileged and is intended solely for the addressee(s). Do not share or use without Rulex's \
approval. If received in error, please contact the sender and delete the email and any \
attachments.</p> </div>
</div>
</div>
</blockquote>
</div>
</blockquote>
</div>
</div>
</body>
</html>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic