jlaine / node-jpickle

Full-javascript parser for Python's pickle format

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

"Unhandled opcode ''"

greg-leocare opened this issue · comments

I have an error on load

"Unhandled opcode '�'"

This is my nodejs code

let pickled = fs.readFileSync('./py-sample/pickle', {
      encoding: 'latin1',
    });
try {
      jpickle.emulated['src.sample.Sample'] = MyClass;
      var unpickled = jpickle.loads(pickled.toString());
      return { msg: unpickled };
  } catch (e) {
    return { e, err: pickled.toString() };
  }

This is the python sources

  • the class serialized (in directory src/sample.py)
class Sample():
    def __init__(self):
        self.un = 1
        self.deux = 2
        self.trois = 3


    def sum(self):
        return "{}".format(self.un + self.deux + self.trois)
  • the serialization code
import pickle
from src.sample import Sample
sample = Sample()
with open('pickle', 'wb') as target:
    pickle.dump(sample, target, protocol=2)

as you can see I force the use of the protocole 2

  • here the generated pickle file
��csrc.sample
Sample
q�)�q�}q�(X����unq�K�X����deuxq�K�X����troisq�K�ub.

Do you have already see the problem and could you explain where is/are my mistakes ?

commented

@greg-leocare j'essai de dépicklé qqc qui a un 'set' et ça semble ne pas le convertir en simple array (list).

Je vais essayer d'ajouter le support des sets et si ca marche je clonerai ce repo et/ou ferai un pull request

There is no support for unpickling user-defined classes, how would this even work?