Skip to content

Instantly share code, notes, and snippets.

@benjaminjkraft
Last active September 15, 2015 04:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save benjaminjkraft/2d330e22a58681c5db5c to your computer and use it in GitHub Desktop.
Save benjaminjkraft/2d330e22a58681c5db5c to your computer and use it in GitHub Desktop.
import pickle
from django.utils.functional import SimpleLazyObject
class FooBase(object):
def __reduce__(self):
self.__dict__['_version'] = 1
return super(FooBase, self).__reduce__()
class Foo(FooBase):
def __init__(self, foobase):
self.__dict__ = foobase.__dict__
self._foo = foobase
lazy_foo = SimpleLazyObject(lambda: Foo(FooBase()))
print pickle.dumps(lazy_foo) # raises an error
# run in a ./manage.py shell
import pickle
from django.contrib.auth.models import User #any model will do
from django.utils.functional import SimpleLazyObject
user = User.objects.get(username='benkraft')
lazy_user = SimpleLazyObject(lambda: user)
pickle.loads(pickle.dumps(lazy_user)) # warns
import pickle
from django.utils.functional import SimpleLazyObject
class Foo(object):
def __reduce__(self):
self.__dict__['_version'] = 1
return super(Foo, self).__reduce__()
def __init__(self):
self._foo = self
lazy_foo = SimpleLazyObject(lambda: Foo())
print pickle.dumps(lazy_foo) # raises an error
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment