Projet

Général

Profil

Development #38021

conversion python3 des pickle

Ajouté par Frédéric Péters il y a plus de 4 ans. Mis à jour il y a plus de 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
27 novembre 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Parce que https://bugs.python.org/issue22005 (si un datetime est présent dans un pickle on ne peut pas le charger avec encoding="utf-8"), on est obligé de charger les pickle en mode "bytes" (qui fait que les str de Python 2 seront chargés en tant que bytes Python 3).

Et ça concerne absolument tous les str, genre même les attributs d'un objet, whatever.__dict__.keys() → [b'id', b'name'...], ce qui fait qu'un whatever.id ne fonctionne pas, etc.


Fichiers

Révisions associées

Révision 1358df73 (diff)
Ajouté par Frédéric Péters il y a plus de 4 ans

general: deal with py2/3 type conversion when unpickling (#38021)

Révision ce811606 (diff)
Ajouté par Frédéric Péters il y a plus de 4 ans

storage: keep non-utf8 strings as bytes (#38021)

(this is not supposed to exist)

Historique

#1

Mis à jour par Frédéric Péters il y a plus de 4 ans

Conversion exhaustive.

Attention un pickle qui passe dans un w.c.s. python 3 ne pourra plus être chargé dans un w.c.s. python 2. (c'est des objets "unicode" qui sortiront, et boum).

De manière anecdotique, il y a aussi parfois dans les pickle des références à des modules qui n'existent plus, en local j'ai rencontré copy_reg et builtins, donc ajout dans sys.modules. Ainsi qu'un ajout de fix_imports=True même si en pratique je n'ai pas vu ça super utile.

Avec ce patch (et les autres postés hier), w.c.s. tourne chez moi totalement en Python 3.

#2

Mis à jour par Benjamin Dauvergne il y a plus de 4 ans

  • Statut changé de Solution proposée à Solution validée

Rien qui me choque.

#3

Mis à jour par Frédéric Péters il y a plus de 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 1358df73ea6637dcc52db3165c5da552103bdded
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Tue Nov 26 18:15:08 2019 +0100

    general: deal with py2/3 type conversion when unpickling (#38021)
#4

Mis à jour par Frédéric Péters il y a plus de 4 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF