PyQt from py27 to py38

Tomas Sobota tom at sobota.net
Tue Oct 26 18:06:35 BST 2021


A couple of ideas here:
https://stackoverflow.com/questions/54047757/unpickle-binary-file-to-text/54048296#54048296
Maybe you could take it from there?
Tom

On Tue, Oct 26, 2021 at 6:12 PM RoadrunnerWMC <roadrunnerwmc at gmail.com>
wrote:

> (Just adding this to the mailing list, if you don't mind)
>
> ---------- Forwarded message ---------
> From: Nicola Raffo <nicola.raffo at rulex.ai>
> Date: Tue, Oct 26, 2021 at 11:15 AM
> Subject: Re: PyQt from py27 to py38
> To: RoadrunnerWMC <roadrunnerwmc at 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 at gmail.com>
> *Sent:* 26 October 2021 17:06
> *To:* Florian Bruhin <me at the-compiler.org>
> *Cc:* pyqt at riverbankcomputing.com <pyqt at 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 at 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=04%7C01%7Cnicola.raffo%40rulex.ai%7C74001822c1bd4a9803f308d998924bf9%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637708576448192165%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=rJY1OaBWAhzGQtPg9t%2BFsHUBVfL%2BkWiOBv%2BdLUt%2Bung%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 at 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%7C74001822c1bd4a9803f308d998924bf9%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637708576448202160%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Gishrgq9fMSZxHWbgd%2FhzjSkxSYMHBh4l%2BK%2BxtigbaM%3D&reserved=0>
>        https://bruhin.software/
> <https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbruhin.software%2F&data=04%7C01%7Cnicola.raffo%40rulex.ai%7C74001822c1bd4a9803f308d998924bf9%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637708576448202160%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=frNp1rYRFTIQJvfh5osGkE9sfYeFiMPNdza%2FzNPXlBg%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%7C74001822c1bd4a9803f308d998924bf9%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637708576448212149%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=zbjyjeolMxleTkjhEHnJTNjEx1FQh9fDhtpESSh8MOw%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%7C74001822c1bd4a9803f308d998924bf9%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637708576448212149%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=SBE0XKDRP9mesVkx8UdAHWikuyV25ppqc8BnQvFQPEA%3D&reserved=0>
>              I love long mails! | https://email.is-not-s.ms/
> <https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Femail.is-not-s.ms%2F&data=04%7C01%7Cnicola.raffo%40rulex.ai%7C74001822c1bd4a9803f308d998924bf9%7Ccb4c9caf154d430fade0c36c8af22d19%7C0%7C0%7C637708576448222143%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=k1E7hVrZc0t%2B19DwXHNbXD2MPc3eJ%2FzGdcR7EluTJE0%3D&reserved=0>
>
> --
>
> *Nicola Raffo*
>
> Senior Product Development Specialist
>
> RuleX <https://rulex.ai>
>
> +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.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20211026/f4259848/attachment.htm>


More information about the PyQt mailing list