2016-10-30 09:46:26 +00:00
|
|
|
# SOME DESCRIPTIVE TITLE.
|
|
|
|
# Copyright (C) 2001-2016, Python Software Foundation
|
|
|
|
# This file is distributed under the same license as the Python package.
|
|
|
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
|
|
#
|
|
|
|
#, fuzzy
|
|
|
|
msgid ""
|
|
|
|
msgstr ""
|
|
|
|
"Project-Id-Version: Python 3.6\n"
|
|
|
|
"Report-Msgid-Bugs-To: \n"
|
2017-04-02 20:14:06 +00:00
|
|
|
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
|
2016-10-30 09:46:26 +00:00
|
|
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
|
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
|
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
2017-05-23 22:40:56 +00:00
|
|
|
"Language: fr\n"
|
2016-10-30 09:46:26 +00:00
|
|
|
"MIME-Version: 1.0\n"
|
|
|
|
"Content-Type: text/plain; charset=UTF-8\n"
|
|
|
|
"Content-Transfer-Encoding: 8bit\n"
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:2
|
|
|
|
msgid ":mod:`pickle` --- Python object serialization"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:10
|
|
|
|
msgid "**Source code:** :source:`Lib/pickle.py`"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:22
|
|
|
|
msgid ""
|
|
|
|
"The :mod:`pickle` module implements binary protocols for serializing and de-"
|
|
|
|
"serializing a Python object structure. *\"Pickling\"* is the process "
|
|
|
|
"whereby a Python object hierarchy is converted into a byte stream, and *"
|
|
|
|
"\"unpickling\"* is the inverse operation, whereby a byte stream (from a :"
|
|
|
|
"term:`binary file` or :term:`bytes-like object`) is converted back into an "
|
|
|
|
"object hierarchy. Pickling (and unpickling) is alternatively known as "
|
|
|
|
"\"serialization\", \"marshalling,\" [#]_ or \"flattening\"; however, to "
|
|
|
|
"avoid confusion, the terms used here are \"pickling\" and \"unpickling\"."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:33
|
|
|
|
msgid ""
|
|
|
|
"The :mod:`pickle` module is not secure against erroneous or maliciously "
|
|
|
|
"constructed data. Never unpickle data received from an untrusted or "
|
|
|
|
"unauthenticated source."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:39
|
|
|
|
msgid "Relationship to other Python modules"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:42
|
|
|
|
msgid "Comparison with ``marshal``"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:44
|
|
|
|
msgid ""
|
|
|
|
"Python has a more primitive serialization module called :mod:`marshal`, but "
|
|
|
|
"in general :mod:`pickle` should always be the preferred way to serialize "
|
|
|
|
"Python objects. :mod:`marshal` exists primarily to support Python's :file:`."
|
|
|
|
"pyc` files."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:49
|
|
|
|
msgid ""
|
|
|
|
"The :mod:`pickle` module differs from :mod:`marshal` in several significant "
|
|
|
|
"ways:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:51
|
|
|
|
msgid ""
|
|
|
|
"The :mod:`pickle` module keeps track of the objects it has already "
|
|
|
|
"serialized, so that later references to the same object won't be serialized "
|
|
|
|
"again. :mod:`marshal` doesn't do this."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:55
|
|
|
|
msgid ""
|
|
|
|
"This has implications both for recursive objects and object sharing. "
|
|
|
|
"Recursive objects are objects that contain references to themselves. These "
|
|
|
|
"are not handled by marshal, and in fact, attempting to marshal recursive "
|
|
|
|
"objects will crash your Python interpreter. Object sharing happens when "
|
|
|
|
"there are multiple references to the same object in different places in the "
|
|
|
|
"object hierarchy being serialized. :mod:`pickle` stores such objects only "
|
|
|
|
"once, and ensures that all other references point to the master copy. "
|
|
|
|
"Shared objects remain shared, which can be very important for mutable "
|
|
|
|
"objects."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:64
|
|
|
|
msgid ""
|
|
|
|
":mod:`marshal` cannot be used to serialize user-defined classes and their "
|
|
|
|
"instances. :mod:`pickle` can save and restore class instances "
|
|
|
|
"transparently, however the class definition must be importable and live in "
|
|
|
|
"the same module as when the object was stored."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:69
|
|
|
|
msgid ""
|
|
|
|
"The :mod:`marshal` serialization format is not guaranteed to be portable "
|
|
|
|
"across Python versions. Because its primary job in life is to support :file:"
|
|
|
|
"`.pyc` files, the Python implementers reserve the right to change the "
|
|
|
|
"serialization format in non-backwards compatible ways should the need arise. "
|
|
|
|
"The :mod:`pickle` serialization format is guaranteed to be backwards "
|
|
|
|
"compatible across Python releases."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:77
|
|
|
|
msgid "Comparison with ``json``"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:79
|
|
|
|
msgid ""
|
|
|
|
"There are fundamental differences between the pickle protocols and `JSON "
|
|
|
|
"(JavaScript Object Notation) <http://json.org>`_:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:82
|
|
|
|
msgid ""
|
|
|
|
"JSON is a text serialization format (it outputs unicode text, although most "
|
|
|
|
"of the time it is then encoded to ``utf-8``), while pickle is a binary "
|
|
|
|
"serialization format;"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:86
|
|
|
|
msgid "JSON is human-readable, while pickle is not;"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:88
|
|
|
|
msgid ""
|
|
|
|
"JSON is interoperable and widely used outside of the Python ecosystem, while "
|
|
|
|
"pickle is Python-specific;"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:91
|
|
|
|
msgid ""
|
|
|
|
"JSON, by default, can only represent a subset of the Python built-in types, "
|
|
|
|
"and no custom classes; pickle can represent an extremely large number of "
|
|
|
|
"Python types (many of them automatically, by clever usage of Python's "
|
|
|
|
"introspection facilities; complex cases can be tackled by implementing :ref:"
|
|
|
|
"`specific object APIs <pickle-inst>`)."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:98
|
|
|
|
msgid ""
|
|
|
|
"The :mod:`json` module: a standard library module allowing JSON "
|
|
|
|
"serialization and deserialization."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:105
|
|
|
|
msgid "Data stream format"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:110
|
|
|
|
msgid ""
|
|
|
|
"The data format used by :mod:`pickle` is Python-specific. This has the "
|
|
|
|
"advantage that there are no restrictions imposed by external standards such "
|
|
|
|
"as JSON or XDR (which can't represent pointer sharing); however it means "
|
|
|
|
"that non-Python programs may not be able to reconstruct pickled Python "
|
|
|
|
"objects."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:115
|
|
|
|
msgid ""
|
|
|
|
"By default, the :mod:`pickle` data format uses a relatively compact binary "
|
|
|
|
"representation. If you need optimal size characteristics, you can "
|
|
|
|
"efficiently :doc:`compress <archiving>` pickled data."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:119
|
|
|
|
msgid ""
|
|
|
|
"The module :mod:`pickletools` contains tools for analyzing data streams "
|
|
|
|
"generated by :mod:`pickle`. :mod:`pickletools` source code has extensive "
|
|
|
|
"comments about opcodes used by pickle protocols."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:123
|
|
|
|
msgid ""
|
|
|
|
"There are currently 5 different protocols which can be used for pickling. "
|
|
|
|
"The higher the protocol used, the more recent the version of Python needed "
|
|
|
|
"to read the pickle produced."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:127
|
|
|
|
msgid ""
|
|
|
|
"Protocol version 0 is the original \"human-readable\" protocol and is "
|
|
|
|
"backwards compatible with earlier versions of Python."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:130
|
|
|
|
msgid ""
|
|
|
|
"Protocol version 1 is an old binary format which is also compatible with "
|
|
|
|
"earlier versions of Python."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:133
|
|
|
|
msgid ""
|
|
|
|
"Protocol version 2 was introduced in Python 2.3. It provides much more "
|
|
|
|
"efficient pickling of :term:`new-style class`\\es. Refer to :pep:`307` for "
|
|
|
|
"information about improvements brought by protocol 2."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:137
|
|
|
|
msgid ""
|
|
|
|
"Protocol version 3 was added in Python 3.0. It has explicit support for :"
|
|
|
|
"class:`bytes` objects and cannot be unpickled by Python 2.x. This is the "
|
|
|
|
"default protocol, and the recommended protocol when compatibility with other "
|
|
|
|
"Python 3 versions is required."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:142
|
|
|
|
msgid ""
|
|
|
|
"Protocol version 4 was added in Python 3.4. It adds support for very large "
|
|
|
|
"objects, pickling more kinds of objects, and some data format "
|
|
|
|
"optimizations. Refer to :pep:`3154` for information about improvements "
|
|
|
|
"brought by protocol 4."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:148
|
|
|
|
msgid ""
|
|
|
|
"Serialization is a more primitive notion than persistence; although :mod:"
|
|
|
|
"`pickle` reads and writes file objects, it does not handle the issue of "
|
|
|
|
"naming persistent objects, nor the (even more complicated) issue of "
|
|
|
|
"concurrent access to persistent objects. The :mod:`pickle` module can "
|
|
|
|
"transform a complex object into a byte stream and it can transform the byte "
|
|
|
|
"stream into an object with the same internal structure. Perhaps the most "
|
|
|
|
"obvious thing to do with these byte streams is to write them onto a file, "
|
|
|
|
"but it is also conceivable to send them across a network or store them in a "
|
|
|
|
"database. The :mod:`shelve` module provides a simple interface to pickle "
|
|
|
|
"and unpickle objects on DBM-style database files."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:161
|
|
|
|
msgid "Module Interface"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:163
|
|
|
|
msgid ""
|
|
|
|
"To serialize an object hierarchy, you simply call the :func:`dumps` "
|
|
|
|
"function. Similarly, to de-serialize a data stream, you call the :func:"
|
|
|
|
"`loads` function. However, if you want more control over serialization and "
|
|
|
|
"de-serialization, you can create a :class:`Pickler` or an :class:`Unpickler` "
|
|
|
|
"object, respectively."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:168
|
|
|
|
msgid "The :mod:`pickle` module provides the following constants:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:173
|
|
|
|
msgid ""
|
|
|
|
"An integer, the highest :ref:`protocol version <pickle-protocols>` "
|
|
|
|
"available. This value can be passed as a *protocol* value to functions :"
|
|
|
|
"func:`dump` and :func:`dumps` as well as the :class:`Pickler` constructor."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:180
|
|
|
|
msgid ""
|
|
|
|
"An integer, the default :ref:`protocol version <pickle-protocols>` used for "
|
|
|
|
"pickling. May be less than :data:`HIGHEST_PROTOCOL`. Currently the default "
|
|
|
|
"protocol is 3, a new protocol designed for Python 3."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:185
|
|
|
|
msgid ""
|
|
|
|
"The :mod:`pickle` module provides the following functions to make the "
|
|
|
|
"pickling process more convenient:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:190
|
|
|
|
msgid ""
|
|
|
|
"Write a pickled representation of *obj* to the open :term:`file object` "
|
|
|
|
"*file*. This is equivalent to ``Pickler(file, protocol).dump(obj)``."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:193 ../Doc/library/pickle.rst:289
|
|
|
|
msgid ""
|
|
|
|
"The optional *protocol* argument, an integer, tells the pickler to use the "
|
|
|
|
"given protocol; supported protocols are 0 to :data:`HIGHEST_PROTOCOL`. If "
|
|
|
|
"not specified, the default is :data:`DEFAULT_PROTOCOL`. If a negative "
|
|
|
|
"number is specified, :data:`HIGHEST_PROTOCOL` is selected."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:198 ../Doc/library/pickle.rst:294
|
|
|
|
msgid ""
|
|
|
|
"The *file* argument must have a write() method that accepts a single bytes "
|
|
|
|
"argument. It can thus be an on-disk file opened for binary writing, an :"
|
|
|
|
"class:`io.BytesIO` instance, or any other custom object that meets this "
|
|
|
|
"interface."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:203 ../Doc/library/pickle.rst:299
|
|
|
|
msgid ""
|
|
|
|
"If *fix_imports* is true and *protocol* is less than 3, pickle will try to "
|
|
|
|
"map the new Python 3 names to the old module names used in Python 2, so that "
|
|
|
|
"the pickle data stream is readable with Python 2."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:209
|
|
|
|
msgid ""
|
|
|
|
"Return the pickled representation of the object as a :class:`bytes` object, "
|
|
|
|
"instead of writing it to a file."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:212
|
|
|
|
msgid ""
|
|
|
|
"Arguments *protocol* and *fix_imports* have the same meaning as in :func:"
|
|
|
|
"`dump`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:217
|
|
|
|
msgid ""
|
|
|
|
"Read a pickled object representation from the open :term:`file object` "
|
|
|
|
"*file* and return the reconstituted object hierarchy specified therein. This "
|
|
|
|
"is equivalent to ``Unpickler(file).load()``."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:221 ../Doc/library/pickle.rst:244
|
|
|
|
msgid ""
|
|
|
|
"The protocol version of the pickle is detected automatically, so no protocol "
|
|
|
|
"argument is needed. Bytes past the pickled object's representation are "
|
|
|
|
"ignored."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:225
|
|
|
|
msgid ""
|
|
|
|
"The argument *file* must have two methods, a read() method that takes an "
|
|
|
|
"integer argument, and a readline() method that requires no arguments. Both "
|
|
|
|
"methods should return bytes. Thus *file* can be an on-disk file opened for "
|
|
|
|
"binary reading, an :class:`io.BytesIO` object, or any other custom object "
|
|
|
|
"that meets this interface."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:231 ../Doc/library/pickle.rst:248
|
|
|
|
msgid ""
|
|
|
|
"Optional keyword arguments are *fix_imports*, *encoding* and *errors*, which "
|
|
|
|
"are used to control compatibility support for pickle stream generated by "
|
|
|
|
"Python 2. If *fix_imports* is true, pickle will try to map the old Python 2 "
|
|
|
|
"names to the new names used in Python 3. The *encoding* and *errors* tell "
|
|
|
|
"pickle how to decode 8-bit string instances pickled by Python 2; these "
|
|
|
|
"default to 'ASCII' and 'strict', respectively. The *encoding* can be "
|
|
|
|
"'bytes' to read these 8-bit string instances as bytes objects."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:241
|
|
|
|
msgid ""
|
|
|
|
"Read a pickled object hierarchy from a :class:`bytes` object and return the "
|
|
|
|
"reconstituted object hierarchy specified therein."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:257
|
|
|
|
msgid "The :mod:`pickle` module defines three exceptions:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:261
|
|
|
|
msgid ""
|
|
|
|
"Common base class for the other pickling exceptions. It inherits :exc:"
|
|
|
|
"`Exception`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:266
|
|
|
|
msgid ""
|
|
|
|
"Error raised when an unpicklable object is encountered by :class:`Pickler`. "
|
|
|
|
"It inherits :exc:`PickleError`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:269
|
|
|
|
msgid ""
|
|
|
|
"Refer to :ref:`pickle-picklable` to learn what kinds of objects can be "
|
|
|
|
"pickled."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:274
|
|
|
|
msgid ""
|
|
|
|
"Error raised when there is a problem unpickling an object, such as a data "
|
|
|
|
"corruption or a security violation. It inherits :exc:`PickleError`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:277
|
|
|
|
msgid ""
|
|
|
|
"Note that other exceptions may also be raised during unpickling, including "
|
|
|
|
"(but not necessarily limited to) AttributeError, EOFError, ImportError, and "
|
|
|
|
"IndexError."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:282
|
|
|
|
msgid ""
|
|
|
|
"The :mod:`pickle` module exports two classes, :class:`Pickler` and :class:"
|
|
|
|
"`Unpickler`:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:287
|
|
|
|
msgid "This takes a binary file for writing a pickle data stream."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:305
|
|
|
|
msgid ""
|
|
|
|
"Write a pickled representation of *obj* to the open file object given in the "
|
|
|
|
"constructor."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:310
|
|
|
|
msgid "Do nothing by default. This exists so a subclass can override it."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:312
|
|
|
|
msgid ""
|
|
|
|
"If :meth:`persistent_id` returns ``None``, *obj* is pickled as usual. Any "
|
|
|
|
"other value causes :class:`Pickler` to emit the returned value as a "
|
|
|
|
"persistent ID for *obj*. The meaning of this persistent ID should be "
|
|
|
|
"defined by :meth:`Unpickler.persistent_load`. Note that the value returned "
|
|
|
|
"by :meth:`persistent_id` cannot itself have a persistent ID."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:318 ../Doc/library/pickle.rst:389
|
|
|
|
msgid "See :ref:`pickle-persistent` for details and examples of uses."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:322
|
|
|
|
msgid ""
|
|
|
|
"A pickler object's dispatch table is a registry of *reduction functions* of "
|
|
|
|
"the kind which can be declared using :func:`copyreg.pickle`. It is a "
|
|
|
|
"mapping whose keys are classes and whose values are reduction functions. A "
|
|
|
|
"reduction function takes a single argument of the associated class and "
|
|
|
|
"should conform to the same interface as a :meth:`__reduce__` method."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:330
|
|
|
|
msgid ""
|
|
|
|
"By default, a pickler object will not have a :attr:`dispatch_table` "
|
|
|
|
"attribute, and it will instead use the global dispatch table managed by the :"
|
|
|
|
"mod:`copyreg` module. However, to customize the pickling for a specific "
|
|
|
|
"pickler object one can set the :attr:`dispatch_table` attribute to a dict-"
|
|
|
|
"like object. Alternatively, if a subclass of :class:`Pickler` has a :attr:"
|
|
|
|
"`dispatch_table` attribute then this will be used as the default dispatch "
|
|
|
|
"table for instances of that class."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:339
|
|
|
|
msgid "See :ref:`pickle-dispatch` for usage examples."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:345
|
|
|
|
msgid ""
|
|
|
|
"Deprecated. Enable fast mode if set to a true value. The fast mode disables "
|
|
|
|
"the usage of memo, therefore speeding the pickling process by not generating "
|
|
|
|
"superfluous PUT opcodes. It should not be used with self-referential "
|
|
|
|
"objects, doing otherwise will cause :class:`Pickler` to recurse infinitely."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:351
|
|
|
|
msgid "Use :func:`pickletools.optimize` if you need more compact pickles."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:356
|
|
|
|
msgid "This takes a binary file for reading a pickle data stream."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:358
|
|
|
|
msgid ""
|
|
|
|
"The protocol version of the pickle is detected automatically, so no protocol "
|
|
|
|
"argument is needed."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:361
|
|
|
|
msgid ""
|
|
|
|
"The argument *file* must have two methods, a read() method that takes an "
|
|
|
|
"integer argument, and a readline() method that requires no arguments. Both "
|
|
|
|
"methods should return bytes. Thus *file* can be an on-disk file object "
|
|
|
|
"opened for binary reading, an :class:`io.BytesIO` object, or any other "
|
|
|
|
"custom object that meets this interface."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:367
|
|
|
|
msgid ""
|
|
|
|
"Optional keyword arguments are *fix_imports*, *encoding* and *errors*, which "
|
|
|
|
"are used to control compatibility support for pickle stream generated by "
|
|
|
|
"Python 2. If *fix_imports* is true, pickle will try to map the old Python 2 "
|
|
|
|
"names to the new names used in Python 3. The *encoding* and *errors* tell "
|
|
|
|
"pickle how to decode 8-bit string instances pickled by Python 2; these "
|
|
|
|
"default to 'ASCII' and 'strict', respectively. The *encoding* can be "
|
|
|
|
"'bytes' to read these ß8-bit string instances as bytes objects."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:377
|
|
|
|
msgid ""
|
|
|
|
"Read a pickled object representation from the open file object given in the "
|
|
|
|
"constructor, and return the reconstituted object hierarchy specified "
|
|
|
|
"therein. Bytes past the pickled object's representation are ignored."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:383
|
|
|
|
msgid "Raise an :exc:`UnpicklingError` by default."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:385
|
|
|
|
msgid ""
|
|
|
|
"If defined, :meth:`persistent_load` should return the object specified by "
|
|
|
|
"the persistent ID *pid*. If an invalid persistent ID is encountered, an :"
|
|
|
|
"exc:`UnpicklingError` should be raised."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:393
|
|
|
|
msgid ""
|
|
|
|
"Import *module* if necessary and return the object called *name* from it, "
|
|
|
|
"where the *module* and *name* arguments are :class:`str` objects. Note, "
|
|
|
|
"unlike its name suggests, :meth:`find_class` is also used for finding "
|
|
|
|
"functions."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:398
|
|
|
|
msgid ""
|
|
|
|
"Subclasses may override this to gain control over what type of objects and "
|
|
|
|
"how they can be loaded, potentially reducing security risks. Refer to :ref:"
|
|
|
|
"`pickle-restrict` for details."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:406
|
|
|
|
msgid "What can be pickled and unpickled?"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:408
|
|
|
|
msgid "The following types can be pickled:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:410
|
|
|
|
msgid "``None``, ``True``, and ``False``"
|
|
|
|
msgstr "``None``, ``True``, and ``False``"
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:412
|
|
|
|
msgid "integers, floating point numbers, complex numbers"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:414
|
|
|
|
msgid "strings, bytes, bytearrays"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:416
|
|
|
|
msgid "tuples, lists, sets, and dictionaries containing only picklable objects"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:418
|
|
|
|
msgid ""
|
|
|
|
"functions defined at the top level of a module (using :keyword:`def`, not :"
|
|
|
|
"keyword:`lambda`)"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:421
|
|
|
|
msgid "built-in functions defined at the top level of a module"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:423
|
|
|
|
msgid "classes that are defined at the top level of a module"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:425
|
|
|
|
msgid ""
|
|
|
|
"instances of such classes whose :attr:`~object.__dict__` or the result of "
|
|
|
|
"calling :meth:`__getstate__` is picklable (see section :ref:`pickle-inst` "
|
|
|
|
"for details)."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:429
|
|
|
|
msgid ""
|
|
|
|
"Attempts to pickle unpicklable objects will raise the :exc:`PicklingError` "
|
|
|
|
"exception; when this happens, an unspecified number of bytes may have "
|
|
|
|
"already been written to the underlying file. Trying to pickle a highly "
|
|
|
|
"recursive data structure may exceed the maximum recursion depth, a :exc:"
|
|
|
|
"`RecursionError` will be raised in this case. You can carefully raise this "
|
|
|
|
"limit with :func:`sys.setrecursionlimit`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:436
|
|
|
|
msgid ""
|
|
|
|
"Note that functions (built-in and user-defined) are pickled by \"fully "
|
|
|
|
"qualified\" name reference, not by value. [#]_ This means that only the "
|
|
|
|
"function name is pickled, along with the name of the module the function is "
|
|
|
|
"defined in. Neither the function's code, nor any of its function attributes "
|
|
|
|
"are pickled. Thus the defining module must be importable in the unpickling "
|
|
|
|
"environment, and the module must contain the named object, otherwise an "
|
|
|
|
"exception will be raised. [#]_"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:443
|
|
|
|
msgid ""
|
|
|
|
"Similarly, classes are pickled by named reference, so the same restrictions "
|
|
|
|
"in the unpickling environment apply. Note that none of the class's code or "
|
|
|
|
"data is pickled, so in the following example the class attribute ``attr`` is "
|
|
|
|
"not restored in the unpickling environment::"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:453
|
|
|
|
msgid ""
|
|
|
|
"These restrictions are why picklable functions and classes must be defined "
|
|
|
|
"in the top level of a module."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:456
|
|
|
|
msgid ""
|
|
|
|
"Similarly, when class instances are pickled, their class's code and data are "
|
|
|
|
"not pickled along with them. Only the instance data are pickled. This is "
|
|
|
|
"done on purpose, so you can fix bugs in a class or add methods to the class "
|
|
|
|
"and still load objects that were created with an earlier version of the "
|
|
|
|
"class. If you plan to have long-lived objects that will see many versions "
|
|
|
|
"of a class, it may be worthwhile to put a version number in the objects so "
|
|
|
|
"that suitable conversions can be made by the class's :meth:`__setstate__` "
|
|
|
|
"method."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:468
|
|
|
|
msgid "Pickling Class Instances"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:472
|
|
|
|
msgid ""
|
|
|
|
"In this section, we describe the general mechanisms available to you to "
|
|
|
|
"define, customize, and control how class instances are pickled and unpickled."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:475
|
|
|
|
msgid ""
|
|
|
|
"In most cases, no additional code is needed to make instances picklable. By "
|
|
|
|
"default, pickle will retrieve the class and the attributes of an instance "
|
|
|
|
"via introspection. When a class instance is unpickled, its :meth:`__init__` "
|
|
|
|
"method is usually *not* invoked. The default behaviour first creates an "
|
|
|
|
"uninitialized instance and then restores the saved attributes. The "
|
|
|
|
"following code shows an implementation of this behaviour::"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:490
|
|
|
|
msgid ""
|
|
|
|
"Classes can alter the default behaviour by providing one or several special "
|
|
|
|
"methods:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:495
|
|
|
|
msgid ""
|
|
|
|
"In protocols 2 and newer, classes that implements the :meth:"
|
|
|
|
"`__getnewargs_ex__` method can dictate the values passed to the :meth:"
|
|
|
|
"`__new__` method upon unpickling. The method must return a pair ``(args, "
|
|
|
|
"kwargs)`` where *args* is a tuple of positional arguments and *kwargs* a "
|
|
|
|
"dictionary of named arguments for constructing the object. Those will be "
|
|
|
|
"passed to the :meth:`__new__` method upon unpickling."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:503
|
|
|
|
msgid ""
|
|
|
|
"You should implement this method if the :meth:`__new__` method of your class "
|
|
|
|
"requires keyword-only arguments. Otherwise, it is recommended for "
|
|
|
|
"compatibility to implement :meth:`__getnewargs__`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:507
|
|
|
|
msgid ":meth:`__getnewargs_ex__` is now used in protocols 2 and 3."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:513
|
|
|
|
msgid ""
|
|
|
|
"This method serve a similar purpose as :meth:`__getnewargs_ex__`, but "
|
|
|
|
"supports only positional arguments. It must return a tuple of arguments "
|
|
|
|
"``args`` which will be passed to the :meth:`__new__` method upon unpickling."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:517
|
|
|
|
msgid ""
|
|
|
|
":meth:`__getnewargs__` will not be called if :meth:`__getnewargs_ex__` is "
|
|
|
|
"defined."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:520
|
|
|
|
msgid ""
|
|
|
|
"Before Python 3.6, :meth:`__getnewargs__` was called instead of :meth:"
|
|
|
|
"`__getnewargs_ex__` in protocols 2 and 3."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:527
|
|
|
|
msgid ""
|
|
|
|
"Classes can further influence how their instances are pickled; if the class "
|
|
|
|
"defines the method :meth:`__getstate__`, it is called and the returned "
|
|
|
|
"object is pickled as the contents for the instance, instead of the contents "
|
|
|
|
"of the instance's dictionary. If the :meth:`__getstate__` method is absent, "
|
|
|
|
"the instance's :attr:`~object.__dict__` is pickled as usual."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:536
|
|
|
|
msgid ""
|
|
|
|
"Upon unpickling, if the class defines :meth:`__setstate__`, it is called "
|
|
|
|
"with the unpickled state. In that case, there is no requirement for the "
|
|
|
|
"state object to be a dictionary. Otherwise, the pickled state must be a "
|
|
|
|
"dictionary and its items are assigned to the new instance's dictionary."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:543
|
|
|
|
msgid ""
|
|
|
|
"If :meth:`__getstate__` returns a false value, the :meth:`__setstate__` "
|
|
|
|
"method will not be called upon unpickling."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:547
|
|
|
|
msgid ""
|
|
|
|
"Refer to the section :ref:`pickle-state` for more information about how to "
|
|
|
|
"use the methods :meth:`__getstate__` and :meth:`__setstate__`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:552
|
|
|
|
msgid ""
|
|
|
|
"At unpickling time, some methods like :meth:`__getattr__`, :meth:"
|
|
|
|
"`__getattribute__`, or :meth:`__setattr__` may be called upon the instance. "
|
|
|
|
"In case those methods rely on some internal invariant being true, the type "
|
|
|
|
"should implement :meth:`__getnewargs__` or :meth:`__getnewargs_ex__` to "
|
|
|
|
"establish such an invariant; otherwise, neither :meth:`__new__` nor :meth:"
|
|
|
|
"`__init__` will be called."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:561
|
|
|
|
msgid ""
|
|
|
|
"As we shall see, pickle does not use directly the methods described above. "
|
|
|
|
"In fact, these methods are part of the copy protocol which implements the :"
|
|
|
|
"meth:`__reduce__` special method. The copy protocol provides a unified "
|
|
|
|
"interface for retrieving the data necessary for pickling and copying "
|
|
|
|
"objects. [#]_"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:567
|
|
|
|
msgid ""
|
|
|
|
"Although powerful, implementing :meth:`__reduce__` directly in your classes "
|
|
|
|
"is error prone. For this reason, class designers should use the high-level "
|
|
|
|
"interface (i.e., :meth:`__getnewargs_ex__`, :meth:`__getstate__` and :meth:"
|
|
|
|
"`__setstate__`) whenever possible. We will show, however, cases where "
|
|
|
|
"using :meth:`__reduce__` is the only option or leads to more efficient "
|
|
|
|
"pickling or both."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:576
|
|
|
|
msgid ""
|
|
|
|
"The interface is currently defined as follows. The :meth:`__reduce__` "
|
|
|
|
"method takes no argument and shall return either a string or preferably a "
|
|
|
|
"tuple (the returned object is often referred to as the \"reduce value\")."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:580
|
|
|
|
msgid ""
|
|
|
|
"If a string is returned, the string should be interpreted as the name of a "
|
|
|
|
"global variable. It should be the object's local name relative to its "
|
|
|
|
"module; the pickle module searches the module namespace to determine the "
|
|
|
|
"object's module. This behaviour is typically useful for singletons."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:585
|
|
|
|
msgid ""
|
|
|
|
"When a tuple is returned, it must be between two and five items long. "
|
|
|
|
"Optional items can either be omitted, or ``None`` can be provided as their "
|
|
|
|
"value. The semantics of each item are in order:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:591
|
|
|
|
msgid ""
|
|
|
|
"A callable object that will be called to create the initial version of the "
|
|
|
|
"object."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:594
|
|
|
|
msgid ""
|
|
|
|
"A tuple of arguments for the callable object. An empty tuple must be given "
|
|
|
|
"if the callable does not accept any argument."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:597
|
|
|
|
msgid ""
|
|
|
|
"Optionally, the object's state, which will be passed to the object's :meth:"
|
|
|
|
"`__setstate__` method as previously described. If the object has no such "
|
|
|
|
"method then, the value must be a dictionary and it will be added to the "
|
|
|
|
"object's :attr:`~object.__dict__` attribute."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:602
|
|
|
|
msgid ""
|
|
|
|
"Optionally, an iterator (and not a sequence) yielding successive items. "
|
|
|
|
"These items will be appended to the object either using ``obj.append(item)`` "
|
|
|
|
"or, in batch, using ``obj.extend(list_of_items)``. This is primarily used "
|
|
|
|
"for list subclasses, but may be used by other classes as long as they have :"
|
|
|
|
"meth:`append` and :meth:`extend` methods with the appropriate signature. "
|
|
|
|
"(Whether :meth:`append` or :meth:`extend` is used depends on which pickle "
|
|
|
|
"protocol version is used as well as the number of items to append, so both "
|
|
|
|
"must be supported.)"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:611
|
|
|
|
msgid ""
|
|
|
|
"Optionally, an iterator (not a sequence) yielding successive key-value "
|
|
|
|
"pairs. These items will be stored to the object using ``obj[key] = "
|
|
|
|
"value``. This is primarily used for dictionary subclasses, but may be used "
|
|
|
|
"by other classes as long as they implement :meth:`__setitem__`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:619
|
|
|
|
msgid ""
|
|
|
|
"Alternatively, a :meth:`__reduce_ex__` method may be defined. The only "
|
|
|
|
"difference is this method should take a single integer argument, the "
|
|
|
|
"protocol version. When defined, pickle will prefer it over the :meth:"
|
|
|
|
"`__reduce__` method. In addition, :meth:`__reduce__` automatically becomes "
|
|
|
|
"a synonym for the extended version. The main use for this method is to "
|
|
|
|
"provide backwards-compatible reduce values for older Python releases."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:631
|
|
|
|
msgid "Persistence of External Objects"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:637
|
|
|
|
msgid ""
|
|
|
|
"For the benefit of object persistence, the :mod:`pickle` module supports the "
|
|
|
|
"notion of a reference to an object outside the pickled data stream. Such "
|
|
|
|
"objects are referenced by a persistent ID, which should be either a string "
|
|
|
|
"of alphanumeric characters (for protocol 0) [#]_ or just an arbitrary object "
|
|
|
|
"(for any newer protocol)."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:643
|
|
|
|
msgid ""
|
|
|
|
"The resolution of such persistent IDs is not defined by the :mod:`pickle` "
|
|
|
|
"module; it will delegate this resolution to the user defined methods on the "
|
|
|
|
"pickler and unpickler, :meth:`~Pickler.persistent_id` and :meth:`~Unpickler."
|
|
|
|
"persistent_load` respectively."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:648
|
|
|
|
msgid ""
|
|
|
|
"To pickle objects that have an external persistent id, the pickler must have "
|
|
|
|
"a custom :meth:`~Pickler.persistent_id` method that takes an object as an "
|
|
|
|
"argument and returns either ``None`` or the persistent id for that object. "
|
|
|
|
"When ``None`` is returned, the pickler simply pickles the object as normal. "
|
|
|
|
"When a persistent ID string is returned, the pickler will pickle that "
|
|
|
|
"object, along with a marker so that the unpickler will recognize it as a "
|
|
|
|
"persistent ID."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:655
|
|
|
|
msgid ""
|
|
|
|
"To unpickle external objects, the unpickler must have a custom :meth:"
|
|
|
|
"`~Unpickler.persistent_load` method that takes a persistent ID object and "
|
|
|
|
"returns the referenced object."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:659
|
|
|
|
msgid ""
|
|
|
|
"Here is a comprehensive example presenting how persistent ID can be used to "
|
|
|
|
"pickle external objects by reference."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:667
|
|
|
|
msgid "Dispatch Tables"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:669
|
|
|
|
msgid ""
|
|
|
|
"If one wants to customize pickling of some classes without disturbing any "
|
|
|
|
"other code which depends on pickling, then one can create a pickler with a "
|
|
|
|
"private dispatch table."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:673
|
|
|
|
msgid ""
|
|
|
|
"The global dispatch table managed by the :mod:`copyreg` module is available "
|
|
|
|
"as :data:`copyreg.dispatch_table`. Therefore, one may choose to use a "
|
|
|
|
"modified copy of :data:`copyreg.dispatch_table` as a private dispatch table."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:678
|
|
|
|
msgid "For example ::"
|
|
|
|
msgstr "Par exemple : ::"
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:685
|
|
|
|
msgid ""
|
|
|
|
"creates an instance of :class:`pickle.Pickler` with a private dispatch table "
|
|
|
|
"which handles the ``SomeClass`` class specially. Alternatively, the code ::"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:695
|
|
|
|
msgid ""
|
|
|
|
"does the same, but all instances of ``MyPickler`` will by default share the "
|
|
|
|
"same dispatch table. The equivalent code using the :mod:`copyreg` module "
|
|
|
|
"is ::"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:706
|
|
|
|
msgid "Handling Stateful Objects"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:712
|
|
|
|
msgid ""
|
|
|
|
"Here's an example that shows how to modify pickling behavior for a class. "
|
|
|
|
"The :class:`TextReader` class opens a text file, and returns the line number "
|
|
|
|
"and line contents each time its :meth:`!readline` method is called. If a :"
|
|
|
|
"class:`TextReader` instance is pickled, all attributes *except* the file "
|
|
|
|
"object member are saved. When the instance is unpickled, the file is "
|
|
|
|
"reopened, and reading resumes from the last location. The :meth:"
|
|
|
|
"`__setstate__` and :meth:`__getstate__` methods are used to implement this "
|
|
|
|
"behavior. ::"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:758
|
|
|
|
msgid "A sample usage might be something like this::"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:773
|
|
|
|
msgid "Restricting Globals"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:778
|
|
|
|
msgid ""
|
|
|
|
"By default, unpickling will import any class or function that it finds in "
|
|
|
|
"the pickle data. For many applications, this behaviour is unacceptable as "
|
|
|
|
"it permits the unpickler to import and invoke arbitrary code. Just consider "
|
|
|
|
"what this hand-crafted pickle data stream does when loaded::"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:788
|
|
|
|
msgid ""
|
|
|
|
"In this example, the unpickler imports the :func:`os.system` function and "
|
|
|
|
"then apply the string argument \"echo hello world\". Although this example "
|
|
|
|
"is inoffensive, it is not difficult to imagine one that could damage your "
|
|
|
|
"system."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:792
|
|
|
|
msgid ""
|
|
|
|
"For this reason, you may want to control what gets unpickled by customizing :"
|
|
|
|
"meth:`Unpickler.find_class`. Unlike its name suggests, :meth:`Unpickler."
|
|
|
|
"find_class` is called whenever a global (i.e., a class or a function) is "
|
|
|
|
"requested. Thus it is possible to either completely forbid globals or "
|
|
|
|
"restrict them to a safe subset."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:798
|
|
|
|
msgid ""
|
|
|
|
"Here is an example of an unpickler allowing only few safe classes from the :"
|
|
|
|
"mod:`builtins` module to be loaded::"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:827
|
|
|
|
msgid "A sample usage of our unpickler working has intended::"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:846
|
|
|
|
msgid ""
|
|
|
|
"As our examples shows, you have to be careful with what you allow to be "
|
|
|
|
"unpickled. Therefore if security is a concern, you may want to consider "
|
|
|
|
"alternatives such as the marshalling API in :mod:`xmlrpc.client` or third-"
|
|
|
|
"party solutions."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:853
|
|
|
|
msgid "Performance"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:855
|
|
|
|
msgid ""
|
|
|
|
"Recent versions of the pickle protocol (from protocol 2 and upwards) feature "
|
|
|
|
"efficient binary encodings for several common features and built-in types. "
|
|
|
|
"Also, the :mod:`pickle` module has a transparent optimizer written in C."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:863
|
|
|
|
msgid "Examples"
|
|
|
|
msgstr "Exemples"
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:865
|
|
|
|
msgid ""
|
|
|
|
"For the simplest code, use the :func:`dump` and :func:`load` functions. ::"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:881
|
|
|
|
msgid "The following example reads the resulting pickled data. ::"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:898
|
|
|
|
msgid "Module :mod:`copyreg`"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:898
|
|
|
|
msgid "Pickle interface constructor registration for extension types."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:901
|
|
|
|
msgid "Module :mod:`pickletools`"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:901
|
|
|
|
msgid "Tools for working with and analyzing pickled data."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:904
|
|
|
|
msgid "Module :mod:`shelve`"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:904
|
|
|
|
msgid "Indexed databases of objects; uses :mod:`pickle`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:907
|
|
|
|
msgid "Module :mod:`copy`"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:907
|
|
|
|
msgid "Shallow and deep object copying."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:909
|
|
|
|
msgid "Module :mod:`marshal`"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:910
|
|
|
|
msgid "High-performance serialization of built-in types."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:914
|
|
|
|
msgid "Footnotes"
|
|
|
|
msgstr "Notes"
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:915
|
|
|
|
msgid "Don't confuse this with the :mod:`marshal` module"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:917
|
|
|
|
msgid ""
|
|
|
|
"This is why :keyword:`lambda` functions cannot be pickled: all :keyword:"
|
|
|
|
"`lambda` functions share the same name: ``<lambda>``."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:920
|
|
|
|
msgid ""
|
|
|
|
"The exception raised will likely be an :exc:`ImportError` or an :exc:"
|
|
|
|
"`AttributeError` but it could be something else."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:923
|
|
|
|
msgid ""
|
|
|
|
"The :mod:`copy` module uses this protocol for shallow and deep copying "
|
|
|
|
"operations."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/pickle.rst:926
|
|
|
|
msgid ""
|
|
|
|
"The limitation on alphanumeric characters is due to the fact the persistent "
|
|
|
|
"IDs, in protocol 0, are delimited by the newline character. Therefore if "
|
|
|
|
"any kind of newline characters occurs in persistent IDs, the resulting "
|
|
|
|
"pickle will become unreadable."
|
|
|
|
msgstr ""
|