Skip to main content

Fork of Python 3 pickle module.

Project description

zodbpickle README

https://travis-ci.org/zopefoundation/zodbpickle.svg?branch=master PyPI 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.

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.

zodbpickle Changelog

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)

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.

  • Added support for errors="bytes".

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zodbpickle-1.0.tar.gz (181.1 kB view details)

Uploaded Source

Built Distributions

zodbpickle-1.0-cp36-cp36m-win_amd64.whl (219.6 kB view details)

Uploaded CPython 3.6m Windows x86-64

zodbpickle-1.0-cp36-cp36m-win32.whl (212.2 kB view details)

Uploaded CPython 3.6m Windows x86

zodbpickle-1.0-cp36-cp36m-manylinux1_x86_64.whl (331.6 kB view details)

Uploaded CPython 3.6m

zodbpickle-1.0-cp36-cp36m-manylinux1_i686.whl (325.4 kB view details)

Uploaded CPython 3.6m

zodbpickle-1.0-cp36-cp36m-macosx_10_6_intel.whl (254.4 kB view details)

Uploaded CPython 3.6m macOS 10.6+ intel

zodbpickle-1.0-cp35-cp35m-win_amd64.whl (219.6 kB view details)

Uploaded CPython 3.5m Windows x86-64

zodbpickle-1.0-cp35-cp35m-win32.whl (212.2 kB view details)

Uploaded CPython 3.5m Windows x86

zodbpickle-1.0-cp35-cp35m-manylinux1_x86_64.whl (331.5 kB view details)

Uploaded CPython 3.5m

zodbpickle-1.0-cp35-cp35m-manylinux1_i686.whl (325.3 kB view details)

Uploaded CPython 3.5m

zodbpickle-1.0-cp35-cp35m-macosx_10_6_intel.whl (254.4 kB view details)

Uploaded CPython 3.5m macOS 10.6+ intel

zodbpickle-1.0-cp34-cp34m-win_amd64.whl (216.5 kB view details)

Uploaded CPython 3.4m Windows x86-64

zodbpickle-1.0-cp34-cp34m-win32.whl (210.6 kB view details)

Uploaded CPython 3.4m Windows x86

zodbpickle-1.0-cp34-cp34m-manylinux1_x86_64.whl (331.0 kB view details)

Uploaded CPython 3.4m

zodbpickle-1.0-cp34-cp34m-manylinux1_i686.whl (325.9 kB view details)

Uploaded CPython 3.4m

zodbpickle-1.0-cp34-cp34m-macosx_10_6_intel.whl (254.3 kB view details)

Uploaded CPython 3.4m macOS 10.6+ intel

zodbpickle-1.0-cp27-cp27mu-manylinux1_x86_64.whl (310.0 kB view details)

Uploaded CPython 2.7mu

zodbpickle-1.0-cp27-cp27mu-manylinux1_i686.whl (301.0 kB view details)

Uploaded CPython 2.7mu

zodbpickle-1.0-cp27-cp27m-win_amd64.whl (212.2 kB view details)

Uploaded CPython 2.7m Windows x86-64

zodbpickle-1.0-cp27-cp27m-win32.whl (208.3 kB view details)

Uploaded CPython 2.7m Windows x86

zodbpickle-1.0-cp27-cp27m-manylinux1_x86_64.whl (310.3 kB view details)

Uploaded CPython 2.7m

zodbpickle-1.0-cp27-cp27m-manylinux1_i686.whl (301.2 kB view details)

Uploaded CPython 2.7m

zodbpickle-1.0-cp27-cp27m-macosx_10_6_intel.whl (247.2 kB view details)

Uploaded CPython 2.7m macOS 10.6+ intel

File details

Details for the file zodbpickle-1.0.tar.gz.

File metadata

  • Download URL: zodbpickle-1.0.tar.gz
  • Upload date:
  • Size: 181.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for zodbpickle-1.0.tar.gz
Algorithm Hash digest
SHA256 3af9169fb1d5901cf6693ab356b0dfda20ad2cacc5673fad59b4449ed50d5399
MD5 a8e597317ff010a2ec47fdabdc3acb3d
BLAKE2b-256 9d361e51b1d7f81f7bc1c7eb2693f3714ec10eb05fd5610492402551a92f3aec

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp36-cp36m-win_amd64.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 9fb4630ac7893fc97f69c8069577d90a84974f96d2dcdb2c067c0698f232c02d
MD5 e7cbb033b3172f632664537c6e6066fc
BLAKE2b-256 048a121d675bd9ecc067f0a67081fc52dcc325cd9421a7fb90b7eb809903981f

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp36-cp36m-win32.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 23228cf8c33c6955ab215324c84688e82848c2669a06e1b1656b4facfff81fe0
MD5 e3f0e049f309abc7de2a41fa78bb0dab
BLAKE2b-256 fa1bc19987b084fa8d86ab8ad66aad1caa02b4222056d8d844edbee3acd57870

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 bcf7ecef9a5966facc3a3823ce2ca022d6289b3646860fc47260e55038e9d321
MD5 04b40e12d1ed60ca31b8b61e685ba5fb
BLAKE2b-256 8a715fe589c0c017237ff2eb0d5fc644806053e4b68566ec6879a00d0d83ea5a

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp36-cp36m-manylinux1_i686.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 abc02cb2adbdad9c64f03b9e3195cb118a3a2239139757dbb88d5693cd113d54
MD5 831e0bed67c7528413a65bd71078eb65
BLAKE2b-256 911a4ebae10886c354088ac7195dbf0297b9abace13a0429b1660ecaae137233

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp36-cp36m-macosx_10_6_intel.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp36-cp36m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 1f93b692fcc4dfa20a06e40f4b24e587fb0dd9c00834fac295ee73e1c2623090
MD5 3955c8e64f1a12840b4ec9e8fcfe4ba7
BLAKE2b-256 434d6aca4e75a7122a2ccdee109a6eebde7858ceb3bb3a817a2ee86edddf4a7d

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp35-cp35m-win_amd64.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 87f0467e944101a7dcd674b43a33a10d4f58b61fffcb9ac0efd2453726fd0309
MD5 89901b74ce9530718854ab43384d1eae
BLAKE2b-256 23a1a16421c4d2c3c1dcb85a1bf3825b3d26710b31e04ea0f95455e074d7a585

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp35-cp35m-win32.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 0a9788a37979715cfa98052e37d6ee1880463aa0fba635caf2ec64b6fdbd2e4a
MD5 ba3b5cdbfe3aef09f0451a83a5f21dff
BLAKE2b-256 2eb18029843039272033dc11d975af054054a755a6f9d5cde8c150247fc2f9c2

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f14109e4c3c5353cc1926e4a0b7a9fda74731e2ea98320701ab69e0b9787a424
MD5 3694bfc7e6e14e2f7c4f867eb2aa8ce4
BLAKE2b-256 ca7ba74987ca590e41ffc66845bbef01c8aa5d136ede9ff3223c26dec2bac7b6

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp35-cp35m-manylinux1_i686.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 96dce0fb50d4f9ae64fe289826904ea851fd7f5d30597296ca5fb0a69396c0be
MD5 5409af295f5bc33306cb266043c0c182
BLAKE2b-256 e36916666c0fdb2b990e3581489019b023976b75e853a24e9b98c963a24f3d33

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp35-cp35m-macosx_10_6_intel.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp35-cp35m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 a31b82d1df4f34587f4c4be22165be00f0ec04e8818d8806169f28c0fd1adf11
MD5 838ba1afdeb29d3d0577969f59ea677d
BLAKE2b-256 3e478c2f68c51979b5ecc540fda4114875defe961fd1a517e8fcacdfbe16dfd0

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp34-cp34m-win_amd64.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 87c23cba15329957ff867471b8eef9c0b2174c40f61a6978d20a71f4c524d875
MD5 b12ea085cda2389f1b482038f384926f
BLAKE2b-256 d0070c798bff886c52dcc98f2bd652b3d2042bd15e164b1f7d14b2810371b0b2

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp34-cp34m-win32.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 95fbaac0639f1d29008d09fd5eb421a8dbc87e5e4e282729772250866a028c52
MD5 58ddb332b978b3ed501b465c779bc3d4
BLAKE2b-256 6d0ced8b26b114052e63ccabbb5107a14e7c7fd97969f257a415bc28878dca5b

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp34-cp34m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 2261f0f4958c48ba81e30e144f5a0ac937452200c2bf375489c38f0343f45902
MD5 1458499a2429774ca4e4456a01785642
BLAKE2b-256 384ed7a0129d47d52913a9e8103214073ae55958a94a8ade67fa15809b1462b9

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp34-cp34m-manylinux1_i686.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 efdd2589aab15cbed8bbe8958552dc9a2ceeb178d138217bfa6db6012847b4ed
MD5 7344fa86f7c34843c917ae55c8de45b2
BLAKE2b-256 00f9caf5632a99ba5b6562937e3b84272dae73a5b6600d8bf291c5a462930cbd

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp34-cp34m-macosx_10_6_intel.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp34-cp34m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 c259e38812691512a0b11d96ffc81e9ad3c78cbb9e37d2faf19ad5ce18870e4b
MD5 4489a51263968e1c1c4997e3b6746899
BLAKE2b-256 bf21e83b424872c3181fd7d00076f672e51e67f18c9f1526e132fcde03c4a2ec

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp27-cp27mu-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 4ce6982ec92a85dd0af89671bf0252a7f7259f762d9fd5ec4bec0049309129a2
MD5 d1f21a34b02264fca4b27f498b7eba8d
BLAKE2b-256 22ad27f4bfc53a50cd34c85b1161965e40f4229c9b900d9c8967143e4069be51

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp27-cp27mu-manylinux1_i686.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp27-cp27mu-manylinux1_i686.whl
Algorithm Hash digest
SHA256 8f22db458f3b682b1ed4a89e4f825cadbc278ce89b0915ed25d05b841630c86d
MD5 0ccdaa3f604ae0dc196775bc74bacff1
BLAKE2b-256 f0684d2414a61654ad3f24959c4aeffff257d65e1e72dd43892dede84737427c

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp27-cp27m-win_amd64.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp27-cp27m-win_amd64.whl
Algorithm Hash digest
SHA256 33e6066759f4c462baf3a65e41095c0d93751f2817d19874405d3b2094ff9108
MD5 8e8870eb4c7a9087aa89e05110545536
BLAKE2b-256 ec1eaf4ff5a2304922b57846378f5f089ee5171b773c0fcb8f9fb3f25ceab235

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp27-cp27m-win32.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp27-cp27m-win32.whl
Algorithm Hash digest
SHA256 e781b3b33aef6e667725fcf4365d4422248e8eae9ea394006ace9d65e2c99ff8
MD5 b27e656570c435f6e16c375de6421890
BLAKE2b-256 27b3ee0d2d49f3fc6ac669197154f975d462f89edc99757053e4017e3a3fede3

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp27-cp27m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 04e6eca53b6e7f562ff7c53415fbdf277166f89f254b5d341db1bcc1f7f0b770
MD5 198adcf5afdf2fd86a0529e11c9cf846
BLAKE2b-256 6609de00a37666d9a1afb039fc033bde037bd7a90c94e8f8e605d792d46322f7

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp27-cp27m-manylinux1_i686.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp27-cp27m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 1397a43cf7ad7f5c9b75cf30df9232b0f03a4d74154ee344afc5e09331a3b3a1
MD5 32dc9c7a9ea748f9da2dbc204d8aa2c2
BLAKE2b-256 f67d7dd8f36e9c9602de0602e1c3a0c01cae34dc9458fafb7261316d571032bb

See more details on using hashes here.

File details

Details for the file zodbpickle-1.0-cp27-cp27m-macosx_10_6_intel.whl.

File metadata

File hashes

Hashes for zodbpickle-1.0-cp27-cp27m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 60bf75ac7efa1ab6d72b5460e86cb69979599f828f60175c1a8f05dda0e6184a
MD5 dd1a4e2bf1442571c9826ea4508de843
BLAKE2b-256 e054069a6c8303b3ca391ca0cbcdfe3b2bbf12ad025878a288b9dcec08ec8062

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page