Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
|PyPI-License| |PyPI-Version|
Makes un-pickle-able objects pick-able.
You can install it via pip
::
pip install pickle-mixin
After installation, you can test it
::
python -c "import pickle_mixin; pickle_mixin.test()"
as long as you have pytest <http://docs.pytest.org/en/latest/>
__.
Pickle by initialisation
Suppose that you have a class whose objects are un-pickle-able or that
would demand a large amount of disk space or memory to be pickle-able.
``PickleByInit`` class lets you pickle object attributes via object
initialization. Consider the following classes:
.. code:: python
class Foo(PickleByInit):
def __init__(self, obj):
super(Foo, self).__init__()
self.obj = obj
class Bar(object):
def __init__(self, filename):
self.filename = filename
def __getstate__(self):
raise PicklingError
def init_dict(self):
return dict(filename=self.filename)
Trying to pickle as follows
.. code:: python
f = Foo(Bar('file.txt'))
pickle.dumps(f)
would raise a ``PicklingError``. The following on the other hand would
work:
.. code:: python
f = Foo(Bar('file.txt'))
f.set_signature_only_attr('obj')
pickle.dumps(f)
The un-pickling process of ``f.obj`` attribute happens via object
initialisation, passing the returned dictionary from ``init_dict`` as
keyword arguments to ``Bar.__init__``.
Mixing classes with and without slots
Pickling does not save attributes defined via __slots__
in the
following case:
.. code:: python
class Foo(object):
__slots__ = ['a']
def __init__(self):
self.a = 4
class Bar(Foo):
def __init__(self):
pass
SlotPickleMixin
fixes it:
.. code:: python
class FooMixin(object):
__slots__ = ['a']
def __init__(self):
self.a = 4
class BarMixin(FooMixin, SlotPickleMixin):
def __init__(self):
FooMixin.__init__(self)
SlotPickleMixin.__init__(self)
f = BarMixin()
o = pickle.dumps(f)
f = pickle.loads(o)
assert hasattr(f, 'a')
This project is licensed under the MIT License - see the
LICENSE <LICENSE>
__ file for details
.. |PyPI-License| image:: https://img.shields.io/pypi/l/pickle-mixin.svg?style=flat-square :target: https://pypi.python.org/pypi/pickle-mixin/ .. |PyPI-Version| image:: https://img.shields.io/pypi/v/pickle-mixin.svg?style=flat-square :target: https://pypi.python.org/pypi/pickle-mixin/
FAQs
Makes un-pickle-able objects pick-able.
We found that pickle-mixin demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.