[issue47206] pickle docs are wrong about nested classes

2022-04-04 Thread Géry

Change by Géry :


--
nosy: +maggyero

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue47206] pickle docs are wrong about nested classes

2022-04-03 Thread Jelle Zijlstra


New submission from Jelle Zijlstra :

https://docs.python.org/3.10/library/pickle.html#what-can-be-pickled-and-unpickled
 says that only "classes that are defined at the top level of a module" can be 
pickled. But in fact these work fine in current Python, probably since 3.3 when 
__qualname__ was added 
(https://docs.python.org/3/library/stdtypes.html#definition.__qualname__). 
Similarly, the docs claim only top-level functions can be pickled, but in fact 
methods nested in classes work fine.

Example script demonstrating that these work:

import pickle


class X:
class Y:
pass

def method(self):
pass


print(pickle.dumps(X.Y))
print(pickle.loads(pickle.dumps(X.Y)))

print(pickle.dumps(X.Y()))
print(pickle.loads(pickle.dumps(X.Y(

print(pickle.dumps(X.method))
print(pickle.loads(pickle.dumps(X.method)))

--
assignee: docs@python
components: Documentation
messages: 416625
nosy: JelleZijlstra, alexandre.vassalotti, docs@python
priority: normal
severity: normal
status: open
title: pickle docs are wrong about nested classes
type: behavior
versions: Python 3.10, Python 3.11, Python 3.9

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com