PEP 495: New pickle format.
This commit is contained in:
parent
6e5376dde9
commit
e4087c70ad
16
pep-0495.txt
16
pep-0495.txt
|
@ -288,14 +288,18 @@ The ``datetime.datetime.time()`` method will copy the value of the
|
|||
Pickles
|
||||
.......
|
||||
|
||||
The value of the fold attribute will only be saved in pickles created
|
||||
with protocol version 4 (introduced in Python 3.4) or greater.
|
||||
|
||||
Pickle sizes for the ``datetime.datetime`` and ``datetime.time``
|
||||
objects will not change. The ``fold`` value will be encoded in the
|
||||
first bit of the 5th byte of the ``datetime.datetime`` pickle payload
|
||||
or the 2nd byte of the datetime.time. In the `current implementation`_
|
||||
these bytes are used to store minute value (0-59) and the first bit is
|
||||
always 0. (This change only affects pickle format. In the C
|
||||
implementation, the ``fold`` attribute will get a full byte to store its
|
||||
value.)
|
||||
first bit of the 3rd (1st) byte of ``datetime.datetime``
|
||||
(``datetime.time``) pickle payload. In the `current implementation`_
|
||||
these byte are used to store the month (1-12) and hour (0-23) values
|
||||
and the first bit is always 0. We picked these bytes because they are
|
||||
the only bytes that are checked by the current unpickle code. Thus
|
||||
loading post-PEP ``fold=1`` pickles in a pre-PEP Python will result in
|
||||
an exception rather than an instance with out of range components.
|
||||
|
||||
.. _current implementation: https://hg.python.org/cpython/file/d3b20bff9c5d/Include/datetime.h#l17
|
||||
|
||||
|
|
Loading…
Reference in New Issue