Uh oh!
There was an error while loading. Please reload this page.
bpo-34204: Use pickle.DEFAULT_PROTOCOL in shelve - #19639
Conversation
Use pickle.DEFAULT_PROTOCOL (currently 4) in shelve instead of a hardcoded 3.
corona10
left a comment
There was a problem hiding this comment.
Would you like to add NEWS on what's new?
It looks like noticiable changing for user.
corona10
commented
Apr 23, 2020
@vstinner Do you have any ideas? |
vstinner
commented
Apr 23, 2020
pitrou
commented
Apr 23, 2020
I don't think this is ok to change. cc @rhettinger |
vstinner
commented
Apr 23, 2020
Oh sorry, I misunderstood the PR. I read that it changes the default pickle version in multiprocessing (oops), but it's about the shelve module :-) |
corona10
commented
May 27, 2020
IMHO, we need more discussion. |
vstinner
left a comment
There was a problem hiding this comment.
LGTM if the PR is updated for Python 3.10 (right now, it says "new in 3.9").
Sorry, first I read that this PR was for multiprocessing... For shelve, IMO it's reaonsable to use the latest pickle version. The main drawback is that shelve files created by Python 3.10 can no longer be read by Python 3.7 and older: protocol 5 was introduced in Python 3.8.
https://docs.python.org/dev/library/pickle.html#data-stream-format
IMHO it's a reasonable limitation. Also, it's well documented that the pickle protocol can easily controlled by the protocol parameter of shelve.open():
https://docs.python.org/dev/library/shelve.html#shelve.open
vstinner
commented
May 27, 2020
Oh, @serhiy-storchaka created https://bugs.python.org/issue34204 so it would be nice to also hear @serhiy-storchaka on this PR :-) |
serhiy-storchaka
commented
May 27, 2020
We can also use just |
vstinner
commented
May 27, 2020
I prefer to have |
pitrou
commented
May 27, 2020
Yes, so if it's well documented, what's the point of changing the default and breaking compatibility? |
vstinner
commented
May 27, 2020
Hum, I measured the file disk depending on the pickle protocol. The efficiency depends on values: https://bugs.python.org/issue34204 |
marco-c
commented
Oct 19, 2020
@ZackerySpytz are you going to update the PR? |
marco-c
commented
Oct 28, 2020
My PR to fix the same issue is #22751. |
…pickle-DEFAULT_PROTOCOL
ZackerySpytz
commented
Oct 28, 2020
I have just pushed an update. |
marco-c
commented
Oct 28, 2020
Thanks, I'll close mine then! |
…lots1 * origin/master: (365 commits) bpo-42029: Remove IRIX code (pythonGH-23023) bpo-42143: Ensure PyFunction_NewWithQualName() can't fail after creating the func object (pythonGH-22953) bpo-34204: Use pickle.DEFAULT_PROTOCOL in shelve (pythonGH-19639) bpo-41805: Documentation for PEP 585 (pythonGH-22615) bpo-42161: Micro-optimize _collections._count_elements() (pythonGH-23008) bpo-42161: Remove private _PyLong_Zero and _PyLong_One (pythonGH-23003) bpo-42099: Fix reference to ob_type in unionobject.c and ceval (pythonGH-22829) bpo-41659: Disallow curly brace directly after primary (pythonGH-22996) bpo-6761: Enhance __call__ documentation (pythonGH-7987) bpo-42161: Modules/ uses _PyLong_GetZero() and _PyLong_GetOne() (pythonGH-22998) bpo-41474, Makefile: Add dependency on cpython/frameobject.h (pythonGH-22999) bpo-42157: Rename unicodedata.ucnhash_CAPI (pythonGH-22994) bpo-42161: Use _PyLong_GetZero() and _PyLong_GetOne() (pythonGH-22995) bpo-30681: Support invalid date format or value in email Date header (pythonGH-22090) bpo-42161: Add _PyLong_GetZero() and _PyLong_GetOne() (pythonGH-22993) bpo-42123: Run the parser two times and only enable invalid rules on the second run (pythonGH-22111) bpo-42157: Convert unicodedata.UCD to heap type (pythonGH-22991) bpo-42157: unicodedata avoids references to UCD_Type (pythonGH-22990) bpo-39101: Fixes BaseException hang in IsolatedAsyncioTestCase. (pythonGH-22654) bpo-1635741: _PyUnicode_Name_CAPI moves to internal C API (pythonGH-22713) ...
Use pickle.DEFAULT_PROTOCOL (currently 5) in shelve instead of a hardcoded 3.
Use pickle.DEFAULT_PROTOCOL (currently 5) in shelve instead of a
hardcoded 3.
https://bugs.python.org/issue34204
Automerge-Triggered-By: GH:csabella