From 1f936063ae8703c0cdb13d85b379d93e0fc7b4db Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Mon, 16 Oct 2023 13:22:46 +0800 Subject: [PATCH] support pickle --- src/collections.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/collections.cpp b/src/collections.cpp index 456a964f..431ab2e1 100644 --- a/src/collections.cpp +++ b/src/collections.cpp @@ -323,6 +323,22 @@ namespace pkpy vm->AttributeError("attribute 'maxlen' of 'collections.deque' objects is not writable"); return vm->None; }); + + // NEW: support pickle + vm->bind(type, "__getnewargs__(self) -> tuple[list, int]", + [](VM *vm, ArgsView args) + { + PyDeque &self = _CAST(PyDeque &, args[0]); + Tuple ret(2); + List list; + for(PyObject* obj: self.dequeItems){ + list.push_back(obj); + } + ret[0] = VAR(std::move(list)); + if(self.bounded) ret[1] = VAR(self.maxlen); + else ret[1] = vm->None; + return VAR(ret); + }); } /// @brief initializes a new PyDeque object