Bug report
Bug description:
So I am not entirely sure whether this is unintended behaviour, but it is definitely a noticeable change between 3.11 and 3.12 that is rather unintuitive
import pickle from io import BytesIO, TextIOWrapper class EncodedFile(TextIOWrapper): def __getstate__(self): return "string" def __setstate__(self, state): pass file = EncodedFile(BytesIO(b"string")) pickle.dumps(file)
This works in Python 3.11 and 3.10, but fails in 3.12 with
pickle.dumps(file) TypeError: cannot pickle 'EncodedFile' instances
CPython versions tested on:
3.10, 3.11, 3.12
Operating systems tested on:
macOS