You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
typing.NamedTuple instances are not picklable Two #72437
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=<Date2016-09-24.07:43:35.706>created_at=<Date2016-09-22.19:45:06.272>labels= ['invalid', 'library']
title='typing.NamedTuple instances are not picklable Two'updated_at=<Date2016-09-24.17:07:45.226>user='https://bugs.python.org/Kurt'
Creating a namedtuple and an instance of the namedtuple in a function then returning the instance to the global namespace made the instance unpickleable, as in bpo-25665.
My bad, I searched and found the issue, it very closely fit mine and the pickle module is new to me. I hadn't yet got through the details of pickling. Thanks for catching that.
Kurt
Activity
Kurt commentedon Sep 22, 2016
Creating a namedtuple and an instance of the namedtuple in a function then returning the instance to the global namespace made the instance unpickleable, as in bpo-25665.
mdickinson commentedon Sep 24, 2016
I don't think this has anything to do with namedtuple; it's true whenever you create a class in an inner scope (rather than at module level). This is by design, and these restrictions are documented: https://docs.python.org/3.6/library/pickle.html#what-can-be-pickled-and-unpickled
For example, running this script:
produces:
Traceback (most recent call last): File "test.py", line 11, in <module> pickle.dumps(a) AttributeError: Can't pickle local object 'my_func.<locals>.A'Kurt commentedon Sep 24, 2016
My bad, I searched and found the issue, it very closely fit mine and the pickle module is new to me. I hadn't yet got through the details of pickling. Thanks for catching that.
Kurt
To: [email protected]
Sent: Saturday, September 24, 2016 1:43 AM
Subject: [bpo-28250] typing.NamedTuple instances are not picklable Two
Mark Dickinson added the comment:
I don't think this has anything to do with namedtuple; it's true whenever you create a class in an inner scope (rather than at module level). This is by design, and these restrictions are documented: https://docs.python.org/3.6/library/pickle.html#what-can-be-pickled-and-unpickled
For example, running this script:
import pickle
def my_func():
class A:
pass
a = A()
return a
a = my_func()
pickle.dumps(a)
produces:
nosy: +mark.dickinson
resolution: -> not a bug
status: open -> closed
Python tracker <[email protected]>
<http://bugs.python.org/issue28250\>