[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%2Fgi \
thub.com%2Fankitects%2Fanki%2Fblob%2F036d04a7b1514fde0018280a79e98066275dae9c%2Fqt%2Fa \
qt%2Fprofiles.py%23L159&data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d50 \
8d9991f45ef%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637709181878857049%7CUnknown% \
7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%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#540 \
48296<https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstackoverflow. \
com%2Fquestions%2F54047757%2Funpickle-binary-file-to-text%2F54048296%2354048296&data=0 \
4%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf154d430f \
ade0c36c8af22d19%7C0%7C0%7C637709181878857049%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAw \
MDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%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.com/?url=https%3A%2F%2Fdocs.python.org%2F3%2Flibrary%2Fpickletools.html&data=0 \
4%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf154d430f \
ade0c36c8af22d19%7C0%7C0%7C637709181878867044%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAw \
MDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%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%2Fwww.qutebrowser.org%2F&data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e446 \
7de4d508d9991f45ef%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637709181878877034%7CU \
nknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Z5Y3EddE%2Fd73B632%2B8GFwboO62ojuptRgOIYETQwTYc%3D&reserved=0>
  https://bruhin.software/<https://nam12.safelinks.protection.outlook.com/?url=https%3 \
A%2F%2Fbruhin.software%2F&data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d \
508d9991f45ef%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637709181878877034%7CUnknow \
n%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%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%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf154d430fade0c36c8af22d19 \
%7C0%7C0%7C637709181878887033%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2lu \
MzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%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/?ur \
l=https%3A%2F%2Fthe-compiler.org%2Fpubkey.asc&data=04%7C01%7Cnicola.raffo%40rulex.ai%7 \
C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C6377091 \
81878887033%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haW \
wiLCJXVCI6Mn0%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%3 \
A%2F%2Femail.is-not-s.ms%2F&data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de \
4d508d9991f45ef%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637709181878897026%7CUnkn \
own%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%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&da \
ta=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf154d \
430fade0c36c8af22d19%7C0%7C0%7C637709181878897026%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4w \
LjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%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%2Fankitects%2Fanki%2Fblob%2F036d04a7b1514fde0018280a79e98066275dae9c%2Fqt%2Faqt%2 \
Fprofiles.py%23L159&amp;data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d50 \
8d9991f45ef%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637709181878857049%7CUnknown% \
7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%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+24iXpzxT1LEbyAMjxhkfNHg6JXfaVmiN9vYCdDIQrZ \
53HXJyuMyAoRua4qmlWRhhkUg4GczCnd8dr3JcaUBaVip7wJ6NQlQ9fHk8cOUO77Z4lLd76e1Y2zBHw+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%2Fquestions%2F54047757%2Funpickle-binary-file-to-text%2F54048296%2354048296&amp;da \
ta=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf154d \
430fade0c36c8af22d19%7C0%7C0%7C637709181878857049%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4w \
LjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%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+H6cWgzRZlmfLGeqh8emF4t5CkmheB4ePjJVAH5 \
xcnIl5U9avoOHGNY53zYBMSR/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%2Flibrary%2Fpickletools.html&amp;data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f1 \
6bbca75e4467de4d508d9991f45ef%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C63770918187 \
8867044%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLC \
JXVCI6Mn0%3D%7C1000&amp;sdata=XBl32YTRlfQSlM2zI6c2qGqc%2FLfctm92RrxqJWusYeI%3D&amp;reserved=0" \
originalsrc="https://docs.python.org/3/library/pickletools.html" \
shash="DN02p758OXHOo1XfJQ/VytE9gae6WGpcnLtH9q6dkQVedZHaG8KQClGunm5G1AeRbgsihdyv9u3CUT7 \
1bp7OHTBpgsS1WhOzhux4idJqb3caLZnCunRVNUqKw6vDClz/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.qutebrowse \
r.org%2F&amp;data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef \
%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637709181878877034%7CUnknown%7CTWFpbGZsb \
3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=Z5Y3EddE%2Fd73B632%2B8GFwboO62ojuptRgOIYETQwTYc%3D&amp;reserved=0" \
originalsrc="https://www.qutebrowser.org/" \
shash="bNPbD1tOIgokWO1Gtz2P6j/Q3lmPfAAhN7lwqXdhX1VKjozPnUjmJfZ1UDSGu7oGOm2gOUv4JaHd7ju \
tb7dl0o3n6rGOlK3O80AFsc+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.softwar \
e%2F&amp;data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7Cc \
b4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637709181878877034%7CUnknown%7CTWFpbGZsb3d8e \
yJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=AWr4a40iUhdZnIUDJv1AZc95Cfb16TP3ABT0SjMNNT4%3D&amp;reserved=0" \
originalsrc="https://bruhin.software/" \
shash="ze5APoJenXSXCX/1sBtNbkr1abvKqCmzdrFmDAaKPFhCtcLy5u+6S88qi8mokBxj5I5oIYP/5DULTl7 \
CMtgV55rS2k/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%2Fs \
ponsors%2FThe-Compiler%2F&amp;data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467 \
de4d508d9991f45ef%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637709181878887033%7CUn \
known%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D \
%7C1000&amp;sdata=irlg32UwQ1qfLfECWBe1T%2FrL18517s62XJLppL48Gtk%3D&amp;reserved=0" \
originalsrc="https://github.com/sponsors/The-Compiler/" \
shash="P4WvhDJw+RJYYs9rcPtz0N4NfkCW8lvYOdfago5FA2pBCozeg0UbVP5unGPpsjER/EQlpKZsIf+D/X8 \
T1VR8jydvcfRJSM5gUwTcPnflBldWq0CpIVgntcmKoFw32+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.o \
rg%2Fpubkey.asc&amp;data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d99 \
91f45ef%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637709181878887033%7CUnknown%7CTW \
FpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=lI5oMnsbTpxNj%2FkHcSCw4GqMDOe8CKfwHqZ02q2Pz%2F8%3D&amp;reserved=0" \
originalsrc="https://the-compiler.org/pubkey.asc" \
shash="J4OMgM6BigDQMsqKswhgjXsC6popQnCZ3Kky1CXAh4fy2Bl4BcLEB5wFX1w4SxMAa4BU+WytlxAkU/5 \
UFqtDkaLFt3G2DZ6wJIehVijy0Lpbm77TFMkofv0utpadLxtYUGvPwMnHIdAFUtfHFUF1p6l2jDM+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%7 \
Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637709181878897026%7CUnknown%7CTWFpbGZsb3d \
8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=NP9IOnKXjUYp5sfjOBeAWvcjiYq9oONcniW5frUJqvo%3D&amp;reserved=0" \
originalsrc="https://email.is-not-s.ms/" \
shash="hOraeL/t9LmFgXRi1KXDXJGmPBibKr2nsjFl+gFl51Q3ZdjoGsIb6i3YEDFgaoQxCVwu+lfwo3fQebY \
XJBTx/KgYTGpGbc633l2YwVV58LbbXvqGFiKzhi09/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&am \
p;data=04%7C01%7Cnicola.raffo%40rulex.ai%7C1f16bbca75e4467de4d508d9991f45ef%7Ccb4c9caf \
154d430fade0c36c8af22d19%7C0%7C0%7C637709181878897026%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi \
MC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=6R9KjNgLmAqfdQuV1pFWcjQ1Do%2Ft5f%2FkOovyt1MfhQ8%3D&amp;reserved=0" \
originalsrc="https://rulex.ai/" \
shash="zxX+IF3YET3aGcT8JMH9XkZsC86VnJLqEMiWmLGB6CBexm/bTbMhAm8TBzOU0QRZbLmm5nBtulKnJ23 \
wqePU/svpUDNZhWoqQZRi5sXtRJj931QXB0ObSKMZi7xvfnaCjmh3fo3szHmP7zTWsxSK1O8MWzsvziIdLoGnN2ODTLU=" \
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