zodbpickle


Namezodbpickle JSON
Version 3.3 PyPI version JSON
download
home_pagehttps://github.com/zopefoundation/zodbpickle
SummaryFork of Python 3 pickle module.
upload_time2024-04-16 06:21:45
maintainerNone
docs_urlNone
authorPython and Zope Foundation
requires_python>=3.7
licensePSFL 2 and ZPL 2.1
keywords zodb pickle
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            ``zodbpickle`` README
=====================

.. image:: https://github.com/zopefoundation/zodbpickle/actions/workflows/tests.yml/badge.svg
        :target: https://github.com/zopefoundation/zodbpickle/actions/workflows/tests.yml

.. image:: https://coveralls.io/repos/github/zopefoundation/zodbpickle/badge.svg
   :target: https://coveralls.io/github/zopefoundation/zodbpickle
   :alt: Coverage status

.. image:: https://img.shields.io/pypi/v/zodbpickle.svg
        :target: https://pypi.python.org/pypi/zodbpickle
        :alt: PyPI

.. image:: https://img.shields.io/pypi/pyversions/zodbpickle.svg
        :target: https://pypi.python.org/pypi/zodbpickle
        :alt: Python versions

This package presents a uniform pickling interface for ZODB:

- Under Python2, this package forks both Python 2.7's ``pickle`` and
  ``cPickle`` modules, adding support for the ``protocol 3`` opcodes.
  It also provides a new subclass of ``bytes``, ``zodbpickle.binary``,
  which Python2 applications can use to pickle binary values such that
  they will be unpickled as ``bytes`` under Py3k.

- Under Py3k, this package forks the ``pickle`` module (and the supporting
  C extension) from both Python 3.2 and Python 3.3.  The fork add support
  for the ``noload`` operations used by ZODB.

Caution
-------

``zodbpickle`` relies on Python's ``pickle`` module.
The ``pickle`` module is not intended to be secure against erroneous or
maliciously constructed data. Never unpickle data received from an
untrusted or unauthenticated source as arbitrary code might be executed.

Also see https://docs.python.org/3.6/library/pickle.html

General Usage
-------------

To get compatibility between Python 2 and 3 pickling, replace::

    import pickle

by::

    from zodbpickle import pickle

This provides compatibility, but has the effect that you get the fast implementation
in Python 3, while Python 2 uses the slow version.

To get a more deterministic choice of the implementation, use one of::

    from zodbpickle import fastpickle # always C
    from zodbpickle import slowpickle # always Python

Both modules can co-exist which is helpful for comparison.

But there is a bit more to consider, so please read on!

Loading/Storing Python 2 Strings
--------------------------------

In all their wisdom, the Python developers have decided that Python 2 ``str``
instances should be loaded as Python 3 ``str`` objects (i.e. unicode
strings). Patches were proposed in Python `issue 6784`__ but were never
applied. This code base contains those patches.

.. __: http://bugs.python.org/issue6784

Example 1: Loading Python 2 pickles on Python 3 ::

    $ python2
    >>> import pickle
    >>> pickle.dumps('\xff', protocol=0)
    "S'\\xff'\np0\n."
    >>> pickle.dumps('\xff', protocol=1)
    'U\x01\xffq\x00.'
    >>> pickle.dumps('\xff', protocol=2)
    '\x80\x02U\x01\xffq\x00.'

    $ python3
    >>> from zodbpickle import pickle
    >>> pickle.loads(b"S'\\xff'\np0\n.", encoding='bytes')
    b'\xff'
    >>> pickle.loads(b'U\x01\xffq\x00.', encoding='bytes')
    b'\xff'
    >>> pickle.loads(b'\x80\x02U\x01\xffq\x00.', encoding='bytes')
    b'\xff'

Example 2: Loading Python 3 pickles on Python 2 ::

    $ python3
    >>> from zodbpickle import pickle
    >>> pickle.dumps(b"\xff", protocol=0)
    b'c_codecs\nencode\np0\n(V\xff\np1\nVlatin1\np2\ntp3\nRp4\n.'
    >>> pickle.dumps(b"\xff", protocol=1)
    b'c_codecs\nencode\nq\x00(X\x02\x00\x00\x00\xc3\xbfq\x01X\x06\x00\x00\x00latin1q\x02tq\x03Rq\x04.'
    >>> pickle.dumps(b"\xff", protocol=2)
    b'\x80\x02c_codecs\nencode\nq\x00X\x02\x00\x00\x00\xc3\xbfq\x01X\x06\x00\x00\x00latin1q\x02\x86q\x03Rq\x04.'

    $ python2
    >>> import pickle
    >>> pickle.loads('c_codecs\nencode\np0\n(V\xff\np1\nVlatin1\np2\ntp3\nRp4\n.')
    '\xff'
    >>> pickle.loads('c_codecs\nencode\nq\x00(X\x02\x00\x00\x00\xc3\xbfq\x01X\x06\x00\x00\x00latin1q\x02tq\x03Rq\x04.')
    '\xff'
    >>> pickle.loads('\x80\x02c_codecs\nencode\nq\x00X\x02\x00\x00\x00\xc3\xbfq\x01X\x06\x00\x00\x00latin1q\x02\x86q\x03Rq\x04.')
    '\xff'

Example 3: everything breaks down ::

    $ python2
    >>> class Foo(object):
    ...     def __init__(self):
    ...         self.x = 'hello'
    ...
    >>> import pickle
    >>> pickle.dumps(Foo(), protocol=0)
    "ccopy_reg\n_reconstructor\np0\n(c__main__\nFoo\np1\nc__builtin__\nobject\np2\nNtp3\nRp4\n(dp5\nS'x'\np6\nS'hello'\np7\nsb."
    >>> pickle.dumps(Foo(), protocol=1)
    'ccopy_reg\n_reconstructor\nq\x00(c__main__\nFoo\nq\x01c__builtin__\nobject\nq\x02Ntq\x03Rq\x04}q\x05U\x01xq\x06U\x05helloq\x07sb.'
    >>> pickle.dumps(Foo(), protocol=2)
    '\x80\x02c__main__\nFoo\nq\x00)\x81q\x01}q\x02U\x01xq\x03U\x05helloq\x04sb.'

    $ python3
    >>> from zodbpickle import pickle
    >>> class Foo(object): pass
    ...
    >>> foo = pickle.loads("ccopy_reg\n_reconstructor\np0\n(c__main__\nFoo\np1\nc__builtin__\nobject\np2\nNtp3\nRp4\n(dp5\nS'x'\np6\nS'hello'\np7\nsb.", encoding='bytes')
    >>> foo.x
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'Foo' object has no attribute 'x'

wait what? ::

    >>> foo.__dict__
    {b'x': b'hello'}

oooh.  So we use ``encoding='ASCII'`` (the default) and ``errors='bytes'`` and
hope it works::

    >>> foo = pickle.loads("ccopy_reg\n_reconstructor\np0\n(c__main__\nFoo\np1\nc__builtin__\nobject\np2\nNtp3\nRp4\n(dp5\nS'x'\np6\nS'hello'\np7\nsb.", errors='bytes')
    >>> foo.x
    'hello'

falling back to bytes if necessary ::

    >>> pickle.loads(b'\x80\x02U\x01\xffq\x00.', errors='bytes')
    b'\xff'


Support for ``noload()``
------------------------

The ZODB uses `cPickle`'s ``noload()`` method to retrieve all persistent
references from a pickle without loading any objects. This feature was removed
from Python 3's pickle. Unfortuantely, this unnecessarily fills the pickle
cache.

This module provides a ``noload()`` method again.


===========
 Changelog
===========

3.3 (2024-04-16)
================

- Build Windows wheels on GHA.

- Add preliminary support for Python 3.13 as of 3.13a5.


3.2 (2024-02-16)
================

- Add preliminary support for Python 3.13 as of 3.13a3.


3.1 (2023-10-05)
================

- Add support for Python 3.12.


3.0.1 (2023-03-28)
==================

- Fix ``NameError`` in ``.fastpickle`` and ``.slowpickle``.


3.0 (2023-03-24)
================

- Build Linux binary wheels for Python 3.11.

- Add preliminary support for Python 3.12a5.

- Drop support for Python 2.7, 3.5, 3.6.

- Drop support for deprecated ``python setup.py test``.


2.6 (2022-11-17)
================

- Add support for building arm64 wheels on macOS.


2.5 (2022-11-03)
================

- Add support for the final Python 3.11 release.


2.4 (2022-09-15)
================

- Add support for Python 3.11 (as of 3.11.0b3).

- Disable unsafe math optimizations in C code.  See `pull request 73
  <https://github.com/zopefoundation/zodbpickle/pull/73>`_.


2.3 (2022-04-22)
================

- Add support for Python 3.11 (as of 3.11.0a7).


2.2.0 (2021-09-29)
==================

- Add support for Python 3.10.


2.1.0 (2021-09-24)
==================

- Add support for Python 3.9.


2.0.0 (2019-11-13)
==================

- CPython 2: Make ``zodbpickle.binary`` objects smaller and untracked
  by the garbage collector. Now they behave more like the native bytes
  object. Just like it, and just like on Python 3, they cannot have
  arbitrary attributes or be weakly referenced. See `issue 53
  <https://github.com/zopefoundation/zodbpickle/issues/53>`_.

1.1 (2019-11-09)
================

- Add support for Python 3.8.

- Drop support for Python 3.4.


1.0.4 (2019-06-12)
==================

- Fix pickle corruption under certain conditions. See `pull request 47
  <https://github.com/zopefoundation/zodbpickle/pull/47>`_.


1.0.3 (2018-12-18)
==================

- Fix a bug: zodbpickle.slowpickle assigned `_Pickler` to `Unpickler`.


1.0.2 (2018-08-10)
==================

- Add support for Python 3.7.


1.0.1 (2018-05-16)
==================

- Fix a memory leak in pickle protocol 3 under Python 2. See `issue 36
  <https://github.com/zopefoundation/zodbpickle/issues/36>`_.


1.0 (2018-02-09)
================

- Add a warning to the readme not to use untrusted pickles.

- Drop support for Python 3.3.


0.7.0 (2017-09-22)
==================

- Drop support for Python 2.6 and 3.2.

- Add support for Jython 2.7.

- Add support for Python 3.5 and 3.6.

0.6.0 (2015-04-02)
==================

- Restore the ``noload`` behaviour from Python 2.6 and provide the
  ``noload`` method on the non-C-accelerated unpicklers under PyPy and
  Python 2.

- Add support for PyPy, PyPy3, and Python 3.4.

0.5.2 (2013-08-17)
==================

- Import accelerator from *our* extension module under Py3k.
  See https://github.com/zopefoundation/zodbpickle/issues/6,
  https://github.com/zopefoundation/zodbpickle/issues/7.

- Fix unpickler's ``load_short_binstring`` across supported platforms.

0.5.1 (2013-07-06)
==================

- Update all code and tests to Python 2.6.8, 2.7.5, 3.2.5, 3.3.2 .

- Add the modules ``zodbpickle.fastpickle`` and ``zodbpickle.slowpickle``.
  This provides a version-independent choice of the C or Python
  implementation.

- Fix a minor bug on OS X

0.5.0 (2013-06-14)
==================

- Removed support for the ``bytes_as_strings`` arguments to pickling APIs:
  the pickles created when that argument was true might not be unpickled
  without passing ``encoding='bytes'``, which ZODB couldn't reliably enforce.
  On Py3k, ZODB will be using ``protocol=3`` pickles anyway.

0.4.4 (2013-06-07)
==================

- Add protocol 3 opcodes to the C version of the ``noload()`` dispatcher.

0.4.3 (2013-06-07)
==================

- Packaging error:  remove spurious ``-ASIDE`` file from sdist.

0.4.2 (2013-06-07)
==================

- Fix NameError in pure-Python version of ``Unpickler.noload_appends``.

- Fix NameError in pure-Python version of ``Unpickler.noload_setitems``.

0.4.1 (2013-04-29)
==================

- Fix typo in Python2 version of ``zodbpickle.pickle`` module.

0.4 (2013-04-28)
================

- Support the common pickle module interface for Python 2.6, 2.7, 3.2, and 3.3.

- Split the Python implementations / tests into Python2- and Py3k-specific
  variants.

- Added a fork of the Python 2.7 ``_pickle.c``, for use under Python2.
  The fork adds support for the Py3k ``protocol 3`` opcodes.

- Added a custom ``binary`` type for use in Python2 apps.
  Derived from ``bytes``, the ``binary`` type allows Python2 apps to pickle
  binary data using opcodes which will cause it to be unpickled as ``bytes``
  on Py3k.  Under Py3k, the ``binary`` type is just an alias for ``bytes``.

0.3 (2013-03-18)
================

- Added ``noload`` code to Python 3.2 version of ``Unpickler``.  As with
  the Python 3.3 version, this code remains untested.

- Added ``bytes_as_strings`` option to the Python 3.2 version of
  ``Pickler``, ``dump``, and ``dumps``.

0.2 (2013-03-05)
================

- Added ``bytes_as_strings`` option to ``Pickler``, ``dump``, and ``dumps``.

- Incomplete support for Python 3.2:

  - Move ``_pickle.c`` -> ``_pickle_33.c``.

  - Clone Python 3.2.3's ``_pickle.c`` -> ``_pickle_32.c`` and apply the
    same patch.

  - Choose between them at build time based on ``sys.version_info``.

  - Disable some tests of 3.3-only features.

  - Missing: implementation of ``noload()`` in ``_pickle_32.c``.

  - Missing: implementation of ``bytes_as_strings=True`` in ``_pickle_32.c``.


0.1.0 (2013-02-27)
==================

- Initial release of Python 3.3's pickle with the patches of Python
  `issue 6784`__ applied.

.. __: http://bugs.python.org/issue6784#msg156166

- Added support for ``errors="bytes"``.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/zopefoundation/zodbpickle",
    "name": "zodbpickle",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "zodb pickle",
    "author": "Python and Zope Foundation",
    "author_email": "zodb-dev@zope.dev",
    "download_url": "https://files.pythonhosted.org/packages/bf/8c/6d12fa39f042e6076bb6d6745852f952997c40b452a35a5d4f3dd99f8966/zodbpickle-3.3.tar.gz",
    "platform": "any",
    "description": "``zodbpickle`` README\n=====================\n\n.. image:: https://github.com/zopefoundation/zodbpickle/actions/workflows/tests.yml/badge.svg\n        :target: https://github.com/zopefoundation/zodbpickle/actions/workflows/tests.yml\n\n.. image:: https://coveralls.io/repos/github/zopefoundation/zodbpickle/badge.svg\n   :target: https://coveralls.io/github/zopefoundation/zodbpickle\n   :alt: Coverage status\n\n.. image:: https://img.shields.io/pypi/v/zodbpickle.svg\n        :target: https://pypi.python.org/pypi/zodbpickle\n        :alt: PyPI\n\n.. image:: https://img.shields.io/pypi/pyversions/zodbpickle.svg\n        :target: https://pypi.python.org/pypi/zodbpickle\n        :alt: Python versions\n\nThis package presents a uniform pickling interface for ZODB:\n\n- Under Python2, this package forks both Python 2.7's ``pickle`` and\n  ``cPickle`` modules, adding support for the ``protocol 3`` opcodes.\n  It also provides a new subclass of ``bytes``, ``zodbpickle.binary``,\n  which Python2 applications can use to pickle binary values such that\n  they will be unpickled as ``bytes`` under Py3k.\n\n- Under Py3k, this package forks the ``pickle`` module (and the supporting\n  C extension) from both Python 3.2 and Python 3.3.  The fork add support\n  for the ``noload`` operations used by ZODB.\n\nCaution\n-------\n\n``zodbpickle`` relies on Python's ``pickle`` module.\nThe ``pickle`` module is not intended to be secure against erroneous or\nmaliciously constructed data. Never unpickle data received from an\nuntrusted or unauthenticated source as arbitrary code might be executed.\n\nAlso see https://docs.python.org/3.6/library/pickle.html\n\nGeneral Usage\n-------------\n\nTo get compatibility between Python 2 and 3 pickling, replace::\n\n    import pickle\n\nby::\n\n    from zodbpickle import pickle\n\nThis provides compatibility, but has the effect that you get the fast implementation\nin Python 3, while Python 2 uses the slow version.\n\nTo get a more deterministic choice of the implementation, use one of::\n\n    from zodbpickle import fastpickle # always C\n    from zodbpickle import slowpickle # always Python\n\nBoth modules can co-exist which is helpful for comparison.\n\nBut there is a bit more to consider, so please read on!\n\nLoading/Storing Python 2 Strings\n--------------------------------\n\nIn all their wisdom, the Python developers have decided that Python 2 ``str``\ninstances should be loaded as Python 3 ``str`` objects (i.e. unicode\nstrings). Patches were proposed in Python `issue 6784`__ but were never\napplied. This code base contains those patches.\n\n.. __: http://bugs.python.org/issue6784\n\nExample 1: Loading Python 2 pickles on Python 3 ::\n\n    $ python2\n    >>> import pickle\n    >>> pickle.dumps('\\xff', protocol=0)\n    \"S'\\\\xff'\\np0\\n.\"\n    >>> pickle.dumps('\\xff', protocol=1)\n    'U\\x01\\xffq\\x00.'\n    >>> pickle.dumps('\\xff', protocol=2)\n    '\\x80\\x02U\\x01\\xffq\\x00.'\n\n    $ python3\n    >>> from zodbpickle import pickle\n    >>> pickle.loads(b\"S'\\\\xff'\\np0\\n.\", encoding='bytes')\n    b'\\xff'\n    >>> pickle.loads(b'U\\x01\\xffq\\x00.', encoding='bytes')\n    b'\\xff'\n    >>> pickle.loads(b'\\x80\\x02U\\x01\\xffq\\x00.', encoding='bytes')\n    b'\\xff'\n\nExample 2: Loading Python 3 pickles on Python 2 ::\n\n    $ python3\n    >>> from zodbpickle import pickle\n    >>> pickle.dumps(b\"\\xff\", protocol=0)\n    b'c_codecs\\nencode\\np0\\n(V\\xff\\np1\\nVlatin1\\np2\\ntp3\\nRp4\\n.'\n    >>> pickle.dumps(b\"\\xff\", protocol=1)\n    b'c_codecs\\nencode\\nq\\x00(X\\x02\\x00\\x00\\x00\\xc3\\xbfq\\x01X\\x06\\x00\\x00\\x00latin1q\\x02tq\\x03Rq\\x04.'\n    >>> pickle.dumps(b\"\\xff\", protocol=2)\n    b'\\x80\\x02c_codecs\\nencode\\nq\\x00X\\x02\\x00\\x00\\x00\\xc3\\xbfq\\x01X\\x06\\x00\\x00\\x00latin1q\\x02\\x86q\\x03Rq\\x04.'\n\n    $ python2\n    >>> import pickle\n    >>> pickle.loads('c_codecs\\nencode\\np0\\n(V\\xff\\np1\\nVlatin1\\np2\\ntp3\\nRp4\\n.')\n    '\\xff'\n    >>> pickle.loads('c_codecs\\nencode\\nq\\x00(X\\x02\\x00\\x00\\x00\\xc3\\xbfq\\x01X\\x06\\x00\\x00\\x00latin1q\\x02tq\\x03Rq\\x04.')\n    '\\xff'\n    >>> pickle.loads('\\x80\\x02c_codecs\\nencode\\nq\\x00X\\x02\\x00\\x00\\x00\\xc3\\xbfq\\x01X\\x06\\x00\\x00\\x00latin1q\\x02\\x86q\\x03Rq\\x04.')\n    '\\xff'\n\nExample 3: everything breaks down ::\n\n    $ python2\n    >>> class Foo(object):\n    ...     def __init__(self):\n    ...         self.x = 'hello'\n    ...\n    >>> import pickle\n    >>> pickle.dumps(Foo(), protocol=0)\n    \"ccopy_reg\\n_reconstructor\\np0\\n(c__main__\\nFoo\\np1\\nc__builtin__\\nobject\\np2\\nNtp3\\nRp4\\n(dp5\\nS'x'\\np6\\nS'hello'\\np7\\nsb.\"\n    >>> pickle.dumps(Foo(), protocol=1)\n    'ccopy_reg\\n_reconstructor\\nq\\x00(c__main__\\nFoo\\nq\\x01c__builtin__\\nobject\\nq\\x02Ntq\\x03Rq\\x04}q\\x05U\\x01xq\\x06U\\x05helloq\\x07sb.'\n    >>> pickle.dumps(Foo(), protocol=2)\n    '\\x80\\x02c__main__\\nFoo\\nq\\x00)\\x81q\\x01}q\\x02U\\x01xq\\x03U\\x05helloq\\x04sb.'\n\n    $ python3\n    >>> from zodbpickle import pickle\n    >>> class Foo(object): pass\n    ...\n    >>> foo = pickle.loads(\"ccopy_reg\\n_reconstructor\\np0\\n(c__main__\\nFoo\\np1\\nc__builtin__\\nobject\\np2\\nNtp3\\nRp4\\n(dp5\\nS'x'\\np6\\nS'hello'\\np7\\nsb.\", encoding='bytes')\n    >>> foo.x\n    Traceback (most recent call last):\n      File \"<stdin>\", line 1, in <module>\n    AttributeError: 'Foo' object has no attribute 'x'\n\nwait what? ::\n\n    >>> foo.__dict__\n    {b'x': b'hello'}\n\noooh.  So we use ``encoding='ASCII'`` (the default) and ``errors='bytes'`` and\nhope it works::\n\n    >>> foo = pickle.loads(\"ccopy_reg\\n_reconstructor\\np0\\n(c__main__\\nFoo\\np1\\nc__builtin__\\nobject\\np2\\nNtp3\\nRp4\\n(dp5\\nS'x'\\np6\\nS'hello'\\np7\\nsb.\", errors='bytes')\n    >>> foo.x\n    'hello'\n\nfalling back to bytes if necessary ::\n\n    >>> pickle.loads(b'\\x80\\x02U\\x01\\xffq\\x00.', errors='bytes')\n    b'\\xff'\n\n\nSupport for ``noload()``\n------------------------\n\nThe ZODB uses `cPickle`'s ``noload()`` method to retrieve all persistent\nreferences from a pickle without loading any objects. This feature was removed\nfrom Python 3's pickle. Unfortuantely, this unnecessarily fills the pickle\ncache.\n\nThis module provides a ``noload()`` method again.\n\n\n===========\n Changelog\n===========\n\n3.3 (2024-04-16)\n================\n\n- Build Windows wheels on GHA.\n\n- Add preliminary support for Python 3.13 as of 3.13a5.\n\n\n3.2 (2024-02-16)\n================\n\n- Add preliminary support for Python 3.13 as of 3.13a3.\n\n\n3.1 (2023-10-05)\n================\n\n- Add support for Python 3.12.\n\n\n3.0.1 (2023-03-28)\n==================\n\n- Fix ``NameError`` in ``.fastpickle`` and ``.slowpickle``.\n\n\n3.0 (2023-03-24)\n================\n\n- Build Linux binary wheels for Python 3.11.\n\n- Add preliminary support for Python 3.12a5.\n\n- Drop support for Python 2.7, 3.5, 3.6.\n\n- Drop support for deprecated ``python setup.py test``.\n\n\n2.6 (2022-11-17)\n================\n\n- Add support for building arm64 wheels on macOS.\n\n\n2.5 (2022-11-03)\n================\n\n- Add support for the final Python 3.11 release.\n\n\n2.4 (2022-09-15)\n================\n\n- Add support for Python 3.11 (as of 3.11.0b3).\n\n- Disable unsafe math optimizations in C code.  See `pull request 73\n  <https://github.com/zopefoundation/zodbpickle/pull/73>`_.\n\n\n2.3 (2022-04-22)\n================\n\n- Add support for Python 3.11 (as of 3.11.0a7).\n\n\n2.2.0 (2021-09-29)\n==================\n\n- Add support for Python 3.10.\n\n\n2.1.0 (2021-09-24)\n==================\n\n- Add support for Python 3.9.\n\n\n2.0.0 (2019-11-13)\n==================\n\n- CPython 2: Make ``zodbpickle.binary`` objects smaller and untracked\n  by the garbage collector. Now they behave more like the native bytes\n  object. Just like it, and just like on Python 3, they cannot have\n  arbitrary attributes or be weakly referenced. See `issue 53\n  <https://github.com/zopefoundation/zodbpickle/issues/53>`_.\n\n1.1 (2019-11-09)\n================\n\n- Add support for Python 3.8.\n\n- Drop support for Python 3.4.\n\n\n1.0.4 (2019-06-12)\n==================\n\n- Fix pickle corruption under certain conditions. See `pull request 47\n  <https://github.com/zopefoundation/zodbpickle/pull/47>`_.\n\n\n1.0.3 (2018-12-18)\n==================\n\n- Fix a bug: zodbpickle.slowpickle assigned `_Pickler` to `Unpickler`.\n\n\n1.0.2 (2018-08-10)\n==================\n\n- Add support for Python 3.7.\n\n\n1.0.1 (2018-05-16)\n==================\n\n- Fix a memory leak in pickle protocol 3 under Python 2. See `issue 36\n  <https://github.com/zopefoundation/zodbpickle/issues/36>`_.\n\n\n1.0 (2018-02-09)\n================\n\n- Add a warning to the readme not to use untrusted pickles.\n\n- Drop support for Python 3.3.\n\n\n0.7.0 (2017-09-22)\n==================\n\n- Drop support for Python 2.6 and 3.2.\n\n- Add support for Jython 2.7.\n\n- Add support for Python 3.5 and 3.6.\n\n0.6.0 (2015-04-02)\n==================\n\n- Restore the ``noload`` behaviour from Python 2.6 and provide the\n  ``noload`` method on the non-C-accelerated unpicklers under PyPy and\n  Python 2.\n\n- Add support for PyPy, PyPy3, and Python 3.4.\n\n0.5.2 (2013-08-17)\n==================\n\n- Import accelerator from *our* extension module under Py3k.\n  See https://github.com/zopefoundation/zodbpickle/issues/6,\n  https://github.com/zopefoundation/zodbpickle/issues/7.\n\n- Fix unpickler's ``load_short_binstring`` across supported platforms.\n\n0.5.1 (2013-07-06)\n==================\n\n- Update all code and tests to Python 2.6.8, 2.7.5, 3.2.5, 3.3.2 .\n\n- Add the modules ``zodbpickle.fastpickle`` and ``zodbpickle.slowpickle``.\n  This provides a version-independent choice of the C or Python\n  implementation.\n\n- Fix a minor bug on OS X\n\n0.5.0 (2013-06-14)\n==================\n\n- Removed support for the ``bytes_as_strings`` arguments to pickling APIs:\n  the pickles created when that argument was true might not be unpickled\n  without passing ``encoding='bytes'``, which ZODB couldn't reliably enforce.\n  On Py3k, ZODB will be using ``protocol=3`` pickles anyway.\n\n0.4.4 (2013-06-07)\n==================\n\n- Add protocol 3 opcodes to the C version of the ``noload()`` dispatcher.\n\n0.4.3 (2013-06-07)\n==================\n\n- Packaging error:  remove spurious ``-ASIDE`` file from sdist.\n\n0.4.2 (2013-06-07)\n==================\n\n- Fix NameError in pure-Python version of ``Unpickler.noload_appends``.\n\n- Fix NameError in pure-Python version of ``Unpickler.noload_setitems``.\n\n0.4.1 (2013-04-29)\n==================\n\n- Fix typo in Python2 version of ``zodbpickle.pickle`` module.\n\n0.4 (2013-04-28)\n================\n\n- Support the common pickle module interface for Python 2.6, 2.7, 3.2, and 3.3.\n\n- Split the Python implementations / tests into Python2- and Py3k-specific\n  variants.\n\n- Added a fork of the Python 2.7 ``_pickle.c``, for use under Python2.\n  The fork adds support for the Py3k ``protocol 3`` opcodes.\n\n- Added a custom ``binary`` type for use in Python2 apps.\n  Derived from ``bytes``, the ``binary`` type allows Python2 apps to pickle\n  binary data using opcodes which will cause it to be unpickled as ``bytes``\n  on Py3k.  Under Py3k, the ``binary`` type is just an alias for ``bytes``.\n\n0.3 (2013-03-18)\n================\n\n- Added ``noload`` code to Python 3.2 version of ``Unpickler``.  As with\n  the Python 3.3 version, this code remains untested.\n\n- Added ``bytes_as_strings`` option to the Python 3.2 version of\n  ``Pickler``, ``dump``, and ``dumps``.\n\n0.2 (2013-03-05)\n================\n\n- Added ``bytes_as_strings`` option to ``Pickler``, ``dump``, and ``dumps``.\n\n- Incomplete support for Python 3.2:\n\n  - Move ``_pickle.c`` -> ``_pickle_33.c``.\n\n  - Clone Python 3.2.3's ``_pickle.c`` -> ``_pickle_32.c`` and apply the\n    same patch.\n\n  - Choose between them at build time based on ``sys.version_info``.\n\n  - Disable some tests of 3.3-only features.\n\n  - Missing: implementation of ``noload()`` in ``_pickle_32.c``.\n\n  - Missing: implementation of ``bytes_as_strings=True`` in ``_pickle_32.c``.\n\n\n0.1.0 (2013-02-27)\n==================\n\n- Initial release of Python 3.3's pickle with the patches of Python\n  `issue 6784`__ applied.\n\n.. __: http://bugs.python.org/issue6784#msg156166\n\n- Added support for ``errors=\"bytes\"``.\n",
    "bugtrack_url": null,
    "license": "PSFL 2 and ZPL 2.1",
    "summary": "Fork of Python 3 pickle module.",
    "version": "3.3",
    "project_urls": {
        "Homepage": "https://github.com/zopefoundation/zodbpickle"
    },
    "split_keywords": [
        "zodb",
        "pickle"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b95670ec752326f59177b722fdf3a381428ee934c33d4b1776c70c9c5dcf26e6",
                "md5": "24a4d97f792bdb3527c7c0673bad67dd",
                "sha256": "1647fd54c5a8ffdb360501faef635b0234ffdbc3047b4d44be1f4f07102cd145"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "24a4d97f792bdb3527c7c0673bad67dd",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 144058,
            "upload_time": "2024-04-16T06:24:26",
            "upload_time_iso_8601": "2024-04-16T06:24:26.799318Z",
            "url": "https://files.pythonhosted.org/packages/b9/56/70ec752326f59177b722fdf3a381428ee934c33d4b1776c70c9c5dcf26e6/zodbpickle-3.3-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ce6f0e8c4a6f45029184dff93810281eb790bd617124317ac423d78e433c3874",
                "md5": "46dd42f4b9cad0f4385e32c31bd8c774",
                "sha256": "3b5a49b210e69053e50a319867cbea2467a77be99add50b9f4cf581f14585156"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "46dd42f4b9cad0f4385e32c31bd8c774",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 140780,
            "upload_time": "2024-04-16T06:24:30",
            "upload_time_iso_8601": "2024-04-16T06:24:30.360501Z",
            "url": "https://files.pythonhosted.org/packages/ce/6f/0e8c4a6f45029184dff93810281eb790bd617124317ac423d78e433c3874/zodbpickle-3.3-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c7062e79265a572a7264fc8cc24c7782b64e7b4fd9f1852a4d9d1cfd4341e114",
                "md5": "9262f0d846a0be92fd6bbe0ad70b36a2",
                "sha256": "eb2869416c86a6550d83488824829f87f6c28dc6ec64fe94444036a8fd65207b"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "9262f0d846a0be92fd6bbe0ad70b36a2",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 284608,
            "upload_time": "2024-04-16T06:44:08",
            "upload_time_iso_8601": "2024-04-16T06:44:08.900117Z",
            "url": "https://files.pythonhosted.org/packages/c7/06/2e79265a572a7264fc8cc24c7782b64e7b4fd9f1852a4d9d1cfd4341e114/zodbpickle-3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3bdcef1047e34c7e6f680e002e04c16f08de3edd12ae641425f3e61795440127",
                "md5": "8129d57e06bafa07e2f66496dc3e1b00",
                "sha256": "84c3ca2bdf2e75a7a282f5892409c24180e60541258d8ab7c23facc6d7e798c8"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "8129d57e06bafa07e2f66496dc3e1b00",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 283951,
            "upload_time": "2024-04-16T06:25:18",
            "upload_time_iso_8601": "2024-04-16T06:25:18.304961Z",
            "url": "https://files.pythonhosted.org/packages/3b/dc/ef1047e34c7e6f680e002e04c16f08de3edd12ae641425f3e61795440127/zodbpickle-3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0098bbc7b4455d34dd0441b9bcc5180e78294b9f6e549366bb96cc407ec042eb",
                "md5": "c5b6670a9ef71c1b0a9b7ec0ce9773cc",
                "sha256": "e3580d0f8d3da10bc19d7f74a36b0a7fcec8d58f33d8a09d5316c1a53383953d"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "c5b6670a9ef71c1b0a9b7ec0ce9773cc",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 280920,
            "upload_time": "2024-04-16T06:24:34",
            "upload_time_iso_8601": "2024-04-16T06:24:34.728000Z",
            "url": "https://files.pythonhosted.org/packages/00/98/bbc7b4455d34dd0441b9bcc5180e78294b9f6e549366bb96cc407ec042eb/zodbpickle-3.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5f0ea5e145ce99e2f793f195e975095c7de68ed3825161e612a4526131a94125",
                "md5": "08eabfd27ed64f3bd77540bdf3a712a9",
                "sha256": "fadf5b7d8265c395eed40500b6b6b242cd277f1ec88060fdec91d299ad0ed6ab"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "08eabfd27ed64f3bd77540bdf3a712a9",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 143503,
            "upload_time": "2024-04-16T06:24:55",
            "upload_time_iso_8601": "2024-04-16T06:24:55.783651Z",
            "url": "https://files.pythonhosted.org/packages/5f/0e/a5e145ce99e2f793f195e975095c7de68ed3825161e612a4526131a94125/zodbpickle-3.3-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9c1e4713a74d45ce4269b70ef44413508a0c4fa5b34ec7c64050440363e18e7a",
                "md5": "ba1c8b85c22240e79c6b5b196ac1b249",
                "sha256": "fc1a5cf5db28de2239766d9b97196171580297411c1ca3136d700c3dc1c2cb84"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "ba1c8b85c22240e79c6b5b196ac1b249",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 140409,
            "upload_time": "2024-04-16T06:24:57",
            "upload_time_iso_8601": "2024-04-16T06:24:57.477398Z",
            "url": "https://files.pythonhosted.org/packages/9c/1e/4713a74d45ce4269b70ef44413508a0c4fa5b34ec7c64050440363e18e7a/zodbpickle-3.3-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "159c40a7f899987c2e69e159eb4dc4ce87077f942372900f41a0bb4e44230006",
                "md5": "872a12559388ca9624e736632d8dab70",
                "sha256": "74754c79d89dcac9191b7a8209cc5e930cdb6f9603e1a0c3de743c8649578cbf"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "872a12559388ca9624e736632d8dab70",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 299603,
            "upload_time": "2024-04-16T06:44:13",
            "upload_time_iso_8601": "2024-04-16T06:44:13.649973Z",
            "url": "https://files.pythonhosted.org/packages/15/9c/40a7f899987c2e69e159eb4dc4ce87077f942372900f41a0bb4e44230006/zodbpickle-3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "81776f12d8febc73735b745f48d5992aaef2301e2d5b49214ab474567ed71121",
                "md5": "30949e072b471643f5dbdb65f86076f7",
                "sha256": "74ffd91853f7ba194fe8818c5669a1d9de33d90fdbad82fcb6dbc6a6a28019a2"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "30949e072b471643f5dbdb65f86076f7",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 299305,
            "upload_time": "2024-04-16T06:25:19",
            "upload_time_iso_8601": "2024-04-16T06:25:19.686865Z",
            "url": "https://files.pythonhosted.org/packages/81/77/6f12d8febc73735b745f48d5992aaef2301e2d5b49214ab474567ed71121/zodbpickle-3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "79e81ef66b5ad4689239faffa8283cf8154be06793a2e685a309cb63545bd426",
                "md5": "746e0908d34124e3e37b7febbcf5cc79",
                "sha256": "12b456116821802096852fcbcc109150d1aaca389f62e614002c315381622c05"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "746e0908d34124e3e37b7febbcf5cc79",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 296170,
            "upload_time": "2024-04-16T06:24:37",
            "upload_time_iso_8601": "2024-04-16T06:24:37.197642Z",
            "url": "https://files.pythonhosted.org/packages/79/e8/1ef66b5ad4689239faffa8283cf8154be06793a2e685a309cb63545bd426/zodbpickle-3.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bd784c15b4267b879cb1544c5350cc5b00d910f685238c4220de079f647e518c",
                "md5": "6b8810aa5f71c6e64f2a8ac86eb0d9ea",
                "sha256": "ece909891069573c6bcd2d5ebedba429ae5ad2260fb75778650d68810cc7bde1"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp312-cp312-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6b8810aa5f71c6e64f2a8ac86eb0d9ea",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 143209,
            "upload_time": "2024-04-16T06:25:09",
            "upload_time_iso_8601": "2024-04-16T06:25:09.751369Z",
            "url": "https://files.pythonhosted.org/packages/bd/78/4c15b4267b879cb1544c5350cc5b00d910f685238c4220de079f647e518c/zodbpickle-3.3-cp312-cp312-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fa40c97fe3f2cb653376b20503b5dc15697123de43a67641784082ed26bfd730",
                "md5": "e5c34f71e930110fdae3bbfa9d5a7b43",
                "sha256": "e96e1e6b8d2c191f51dcef277e439a4b5b302810be65f22b585d24ada63d094f"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "e5c34f71e930110fdae3bbfa9d5a7b43",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 140331,
            "upload_time": "2024-04-16T06:25:11",
            "upload_time_iso_8601": "2024-04-16T06:25:11.880142Z",
            "url": "https://files.pythonhosted.org/packages/fa/40/c97fe3f2cb653376b20503b5dc15697123de43a67641784082ed26bfd730/zodbpickle-3.3-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "42b58c27c5a294352e2446991f09a91ecdf4da572d07b5511a0954958ab443a0",
                "md5": "70639441bf309af82e2cdafd33d3d079",
                "sha256": "2da394bc66cdc77edb60c0aaaa617918b966716b2fad2796aa773a9661645c19"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "70639441bf309af82e2cdafd33d3d079",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 305637,
            "upload_time": "2024-04-16T06:44:16",
            "upload_time_iso_8601": "2024-04-16T06:44:16.619986Z",
            "url": "https://files.pythonhosted.org/packages/42/b5/8c27c5a294352e2446991f09a91ecdf4da572d07b5511a0954958ab443a0/zodbpickle-3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d7e260acd997a7bffab184028c2d97da75f926c834c9b0426801496ed649ca30",
                "md5": "b944c99a1ed3c628efe94360c0c2205e",
                "sha256": "5519d22b7c1c989d3fbafb36a6c49ad7df859d3a5609ffa95fbc4717965675b1"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b944c99a1ed3c628efe94360c0c2205e",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 304871,
            "upload_time": "2024-04-16T06:25:21",
            "upload_time_iso_8601": "2024-04-16T06:25:21.872162Z",
            "url": "https://files.pythonhosted.org/packages/d7/e2/60acd997a7bffab184028c2d97da75f926c834c9b0426801496ed649ca30/zodbpickle-3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "701a2548f43f6ada13ed6e4aa999c0418b7f7cc762cec550baaee3ba47da182a",
                "md5": "ff8eaf938ec0f5f8b886d8f4a819ad4d",
                "sha256": "15562af6b6cca889777d0e88434dfb9e5f9aa1d16928aea522a6eeefd43f8433"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "ff8eaf938ec0f5f8b886d8f4a819ad4d",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 302299,
            "upload_time": "2024-04-16T06:24:39",
            "upload_time_iso_8601": "2024-04-16T06:24:39.122828Z",
            "url": "https://files.pythonhosted.org/packages/70/1a/2548f43f6ada13ed6e4aa999c0418b7f7cc762cec550baaee3ba47da182a/zodbpickle-3.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "30506a2be5943fea6b5320d28056cad53c002c11264f0a1fd31964d4367bd209",
                "md5": "c07f3341381d0bf56ce8fb4869573cc9",
                "sha256": "f53ef4e36939a87170b059170ee2260625e6bc92b19f7f36e27c097b006c073b"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp37-cp37m-macosx_11_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c07f3341381d0bf56ce8fb4869573cc9",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 144036,
            "upload_time": "2024-04-16T06:25:23",
            "upload_time_iso_8601": "2024-04-16T06:25:23.624627Z",
            "url": "https://files.pythonhosted.org/packages/30/50/6a2be5943fea6b5320d28056cad53c002c11264f0a1fd31964d4367bd209/zodbpickle-3.3-cp37-cp37m-macosx_11_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "25802b5186fa8fc0fc0057a2ab82a07e43a27c183c6d231a83f3546d6739b02e",
                "md5": "23428944cb480acb9527bebb4804489d",
                "sha256": "e202c68b976da05d7795da27283d112b3cbb35e5312927c7d34e6ac43d167772"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "23428944cb480acb9527bebb4804489d",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 275339,
            "upload_time": "2024-04-16T06:44:18",
            "upload_time_iso_8601": "2024-04-16T06:44:18.692462Z",
            "url": "https://files.pythonhosted.org/packages/25/80/2b5186fa8fc0fc0057a2ab82a07e43a27c183c6d231a83f3546d6739b02e/zodbpickle-3.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b08db5fa439bc8f5f286ad07d011d296d7df4824476ad7b1d28a5d535fd67f50",
                "md5": "ef8a2cb68e7819a8d9244e9932f3344f",
                "sha256": "fdc25815dfd331aff243c62d323c91813c4d80458250b01d2fdc8f290d5851c8"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ef8a2cb68e7819a8d9244e9932f3344f",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 274246,
            "upload_time": "2024-04-16T06:25:23",
            "upload_time_iso_8601": "2024-04-16T06:25:23.375536Z",
            "url": "https://files.pythonhosted.org/packages/b0/8d/b5fa439bc8f5f286ad07d011d296d7df4824476ad7b1d28a5d535fd67f50/zodbpickle-3.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cdb3fb2f265702f0e23fd73675a1c4bde94c34af68df6b10349ac2a6f0b88e62",
                "md5": "fab3d9af87dad5a1cb2d1ec4b0748410",
                "sha256": "941caadf97ba621cea7e20766aea980f964e8b89b1e91c1a3d015ee9d26eeb3c"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "fab3d9af87dad5a1cb2d1ec4b0748410",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 270192,
            "upload_time": "2024-04-16T06:24:41",
            "upload_time_iso_8601": "2024-04-16T06:24:41.531563Z",
            "url": "https://files.pythonhosted.org/packages/cd/b3/fb2f265702f0e23fd73675a1c4bde94c34af68df6b10349ac2a6f0b88e62/zodbpickle-3.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "102c4e35269581ca85232d38f4e1c16e0c0af2bd185b2d5a78f9dac52af78a7f",
                "md5": "351c6d9290671dce24a39531dbc4b988",
                "sha256": "01f9ca46550e741cc15fe397e6576a89a86a8a8c357441a9d2bc3cd10c69eb36"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "351c6d9290671dce24a39531dbc4b988",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 144340,
            "upload_time": "2024-04-16T06:25:40",
            "upload_time_iso_8601": "2024-04-16T06:25:40.117601Z",
            "url": "https://files.pythonhosted.org/packages/10/2c/4e35269581ca85232d38f4e1c16e0c0af2bd185b2d5a78f9dac52af78a7f/zodbpickle-3.3-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3605f6ada7e3098762d8105950fd1397f505ff269463d17218c186eb8dde42ac",
                "md5": "d2a684e4fd04f75abdcd2ef3d11ed476",
                "sha256": "e855d752d0fdc977e6b23ed23810f42594576c48c3f7cb86d6ed0f65c9310b8e"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "d2a684e4fd04f75abdcd2ef3d11ed476",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 140913,
            "upload_time": "2024-04-16T06:25:41",
            "upload_time_iso_8601": "2024-04-16T06:25:41.489498Z",
            "url": "https://files.pythonhosted.org/packages/36/05/f6ada7e3098762d8105950fd1397f505ff269463d17218c186eb8dde42ac/zodbpickle-3.3-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "07ad690cda8912b8ac7e0706ca39a34eca64f9f2027e4b4dbd7adc359bfcc32d",
                "md5": "7638dbbfe4975903aa772f9d7a57c142",
                "sha256": "6778b70477b7b1c7ee4ef441a4de2ebd4a21b0544ee25a0ae46f9182a041ffaf"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "7638dbbfe4975903aa772f9d7a57c142",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 288572,
            "upload_time": "2024-04-16T06:44:20",
            "upload_time_iso_8601": "2024-04-16T06:44:20.796906Z",
            "url": "https://files.pythonhosted.org/packages/07/ad/690cda8912b8ac7e0706ca39a34eca64f9f2027e4b4dbd7adc359bfcc32d/zodbpickle-3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "15fb017af1452a6eb22d99c1d09852b7667f0fc6c822616fa8d8d6c792182544",
                "md5": "0b1c87f414a5f3a0353fba3156dc3635",
                "sha256": "0c8a6d6a7757541e1ca18f8cd0b5ab3017113b319d78f3155dad69afb7e9061f"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0b1c87f414a5f3a0353fba3156dc3635",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 288625,
            "upload_time": "2024-04-16T06:25:26",
            "upload_time_iso_8601": "2024-04-16T06:25:26.448328Z",
            "url": "https://files.pythonhosted.org/packages/15/fb/017af1452a6eb22d99c1d09852b7667f0fc6c822616fa8d8d6c792182544/zodbpickle-3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e808c7fd168bf6c0532c983c729dd5e4c4370d4427cf7e1fde5089a28b47a2f0",
                "md5": "2b1019b777ee69d8615cdd98a1e5fcda",
                "sha256": "7041ab73c607bed06b14e8f4af8bf0a863de0d0e45a5023f30655da9f67abb7c"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "2b1019b777ee69d8615cdd98a1e5fcda",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 285654,
            "upload_time": "2024-04-16T06:24:43",
            "upload_time_iso_8601": "2024-04-16T06:24:43.547780Z",
            "url": "https://files.pythonhosted.org/packages/e8/08/c7fd168bf6c0532c983c729dd5e4c4370d4427cf7e1fde5089a28b47a2f0/zodbpickle-3.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f5c486f892e4209aad86246f6b542596c621bdc67db048b83c64ff68a528cdbb",
                "md5": "79f6809eeffae30b616eacea3bda9725",
                "sha256": "e4d2cacd9282a339aebf9fe0266f21c3a9470f32edfedcd7e9ce77087ffe05e6"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "79f6809eeffae30b616eacea3bda9725",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 144036,
            "upload_time": "2024-04-16T06:26:12",
            "upload_time_iso_8601": "2024-04-16T06:26:12.651725Z",
            "url": "https://files.pythonhosted.org/packages/f5/c4/86f892e4209aad86246f6b542596c621bdc67db048b83c64ff68a528cdbb/zodbpickle-3.3-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "dae310a0dc7725f04a50019192a46ade683f03139afc4897cfb7d4b14903097f",
                "md5": "8f68ee7e3d694843a1db15ec20b9d937",
                "sha256": "8d56d6542fdeb3643db5dff37f124c7224ddc29362a6c942267b783fff0ec7f2"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "8f68ee7e3d694843a1db15ec20b9d937",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 140734,
            "upload_time": "2024-04-16T06:26:14",
            "upload_time_iso_8601": "2024-04-16T06:26:14.539626Z",
            "url": "https://files.pythonhosted.org/packages/da/e3/10a0dc7725f04a50019192a46ade683f03139afc4897cfb7d4b14903097f/zodbpickle-3.3-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ddd1f52bd4dbc986cf86c3084ed0a6608cb5f363015fccb077fe41b770d329f9",
                "md5": "42e7b955601319eada791bae03d45a0c",
                "sha256": "b4aee680f55671181d033d6bd83b809bb38c69852086aab624d745244524de3e"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "42e7b955601319eada791bae03d45a0c",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 282770,
            "upload_time": "2024-04-16T06:44:22",
            "upload_time_iso_8601": "2024-04-16T06:44:22.841395Z",
            "url": "https://files.pythonhosted.org/packages/dd/d1/f52bd4dbc986cf86c3084ed0a6608cb5f363015fccb077fe41b770d329f9/zodbpickle-3.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b3fc48331c4a7dbda9fa9110d0df6eb86c8abe63bdc6d2d02df825d929d94f54",
                "md5": "ccd01aecb831349e1c4c42e31bd4896a",
                "sha256": "19392328730d98819b5ee641b403f3510a2f5d8e26a8bdb07e118115a2e4c94c"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ccd01aecb831349e1c4c42e31bd4896a",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 282181,
            "upload_time": "2024-04-16T06:25:28",
            "upload_time_iso_8601": "2024-04-16T06:25:28.576870Z",
            "url": "https://files.pythonhosted.org/packages/b3/fc/48331c4a7dbda9fa9110d0df6eb86c8abe63bdc6d2d02df825d929d94f54/zodbpickle-3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5a5e87b159bed9328e2f2830ee0e32f55f22df7bb83b7ec0031cb213b0d5b524",
                "md5": "5a985b93a0d590f8f49cc69a656e1800",
                "sha256": "9a51dd9d0cb4f43defe4fb7eedee95eee70ef0ec14951b36b91386576c5bdc9e"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "5a985b93a0d590f8f49cc69a656e1800",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 279529,
            "upload_time": "2024-04-16T06:24:44",
            "upload_time_iso_8601": "2024-04-16T06:24:44.985526Z",
            "url": "https://files.pythonhosted.org/packages/5a/5e/87b159bed9328e2f2830ee0e32f55f22df7bb83b7ec0031cb213b0d5b524/zodbpickle-3.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bf8c6d12fa39f042e6076bb6d6745852f952997c40b452a35a5d4f3dd99f8966",
                "md5": "a87a51e30133fa219a9346dba24f41c4",
                "sha256": "75c1792ac7bd5bcf4950582062ac3684e322aa13ab98420e3bfec4582273a368"
            },
            "downloads": -1,
            "filename": "zodbpickle-3.3.tar.gz",
            "has_sig": false,
            "md5_digest": "a87a51e30133fa219a9346dba24f41c4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 110800,
            "upload_time": "2024-04-16T06:21:45",
            "upload_time_iso_8601": "2024-04-16T06:21:45.905358Z",
            "url": "https://files.pythonhosted.org/packages/bf/8c/6d12fa39f042e6076bb6d6745852f952997c40b452a35a5d4f3dd99f8966/zodbpickle-3.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-16 06:21:45",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "zopefoundation",
    "github_project": "zodbpickle",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "tox": true,
    "lcname": "zodbpickle"
}
        
Elapsed time: 0.24401s