Extended pickling support for Python objects
Project description
# cloudpickle
[](https://travis-ci.org/cloudpipe/cloudpickle)
[](https://codecov.io/github/cloudpipe/cloudpickle?branch=master)
`cloudpickle` makes it possible to serialize Python constructs not supported
by the default `pickle` module from the Python standard library.
`cloudpickle` is especially useful for cluster computing where Python
expressions are shipped over the network to execute on remote hosts, possibly
close to the data.
Among other things, `cloudpickle` supports pickling for lambda expressions,
functions and classes defined interactively in the `__main__` module.
`cloudpickle` uses `pickle.HIGHEST_PROTOCOL` by default: it is meant to
send objects between processes running the same version of Python. It is
discouraged to use `cloudpickle` for long-term storage.
Installation
------------
The latest release of `cloudpickle` is available from
[pypi](https://pypi.python.org/pypi/cloudpickle):
pip install cloudpickle
Examples
--------
Pickling a lambda expression:
```python
>>> import cloudpickle
>>> squared = lambda x: x ** 2
>>> pickled_lambda = cloudpickle.dumps(squared)
>>> import pickle
>>> new_squared = pickle.loads(pickled_lambda)
>>> new_squared(2)
4
```
Pickling a function interactively defined in a Python shell session
(in the `__main__` module):
```python
>>> CONSTANT = 42
>>> def my_function(data):
... return data + CONSTANT
...
>>> pickled_function = cloudpickle.dumps(my_function)
>>> pickle.loads(pickled_function)(43)
85
```
Running the tests
-----------------
- With `tox`, to test run the tests for all the supported versions of
Python and PyPy:
pip install tox
tox
or alternatively for a specific environment:
tox -e py27
- With `py.test` to only run the tests for your current version of
Python:
pip install -r dev-requirements.txt
PYTHONPATH='.:tests' py.test
History
-------
`cloudpickle` was initially developed by [picloud.com](http://web.archive.org/web/20140721022102/http://blog.picloud.com/2013/11/17/picloud-has-joined-dropbox/) and shipped as part of
the client SDK.
A copy of `cloudpickle.py` was included as part of PySpark, the Python
interface to [Apache Spark](https://spark.apache.org/). Davies Liu, Josh
Rosen, Thom Neale and other Apache Spark developers improved it significantly,
most notably to add support for PyPy and Python 3.
The aim of the `cloudpickle` project is to make that work available to a wider
audience outside of the Spark ecosystem and to make it easier to improve it
further notably with the help of a dedicated non-regression test suite.
[](https://travis-ci.org/cloudpipe/cloudpickle)
[](https://codecov.io/github/cloudpipe/cloudpickle?branch=master)
`cloudpickle` makes it possible to serialize Python constructs not supported
by the default `pickle` module from the Python standard library.
`cloudpickle` is especially useful for cluster computing where Python
expressions are shipped over the network to execute on remote hosts, possibly
close to the data.
Among other things, `cloudpickle` supports pickling for lambda expressions,
functions and classes defined interactively in the `__main__` module.
`cloudpickle` uses `pickle.HIGHEST_PROTOCOL` by default: it is meant to
send objects between processes running the same version of Python. It is
discouraged to use `cloudpickle` for long-term storage.
Installation
------------
The latest release of `cloudpickle` is available from
[pypi](https://pypi.python.org/pypi/cloudpickle):
pip install cloudpickle
Examples
--------
Pickling a lambda expression:
```python
>>> import cloudpickle
>>> squared = lambda x: x ** 2
>>> pickled_lambda = cloudpickle.dumps(squared)
>>> import pickle
>>> new_squared = pickle.loads(pickled_lambda)
>>> new_squared(2)
4
```
Pickling a function interactively defined in a Python shell session
(in the `__main__` module):
```python
>>> CONSTANT = 42
>>> def my_function(data):
... return data + CONSTANT
...
>>> pickled_function = cloudpickle.dumps(my_function)
>>> pickle.loads(pickled_function)(43)
85
```
Running the tests
-----------------
- With `tox`, to test run the tests for all the supported versions of
Python and PyPy:
pip install tox
tox
or alternatively for a specific environment:
tox -e py27
- With `py.test` to only run the tests for your current version of
Python:
pip install -r dev-requirements.txt
PYTHONPATH='.:tests' py.test
History
-------
`cloudpickle` was initially developed by [picloud.com](http://web.archive.org/web/20140721022102/http://blog.picloud.com/2013/11/17/picloud-has-joined-dropbox/) and shipped as part of
the client SDK.
A copy of `cloudpickle.py` was included as part of PySpark, the Python
interface to [Apache Spark](https://spark.apache.org/). Davies Liu, Josh
Rosen, Thom Neale and other Apache Spark developers improved it significantly,
most notably to add support for PyPy and Python 3.
The aim of the `cloudpickle` project is to make that work available to a wider
audience outside of the Spark ecosystem and to make it easier to improve it
further notably with the help of a dedicated non-regression test suite.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
cloudpickle-0.5.3.tar.gz
(24.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cloudpickle-0.5.3.tar.gz.
File metadata
- Download URL: cloudpickle-0.5.3.tar.gz
- Upload date:
- Size: 24.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54858c7b7dc763ed894ff91059c1d0b017d593fe23850d3d8d75f47d98398197
|
|
| MD5 |
2912d17b0b46242ecdf583c1906c07da
|
|
| BLAKE2b-256 |
56d030b94aecd2e052dda921dfd6468846120dfa2927e0e0476590398fbe6eec
|
File details
Details for the file cloudpickle-0.5.3-py2.py3-none-any.whl.
File metadata
- Download URL: cloudpickle-0.5.3-py2.py3-none-any.whl
- Upload date:
- Size: 13.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac7acd0dcb1c52fa14873f801efe0c53e6457bcc5f01542cb445a6515d9a4b72
|
|
| MD5 |
fa9160adcacc02642e54d7fbe93b7872
|
|
| BLAKE2b-256 |
e7bf60ae7ec1e8c6742d2abbb6819c39a48ee796793bcdb7e1d5e41a3e379ddd
|