In article <idosir$45...@dough.gmane.org>, Terry Reedy <tjre...@udel.edu> wrote: > On 12/8/2010 2:42 PM, Dan wrote: > > I have a simple type derived from bytes... > > > > class atom(bytes): > > pass > > > > ... that I cannot deepcopy(). The session below demonstrates how > > deepcopy() of "bytes" works fine, but deepcopy() of "atom" does not. [...] > > Python 3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit > > (Intel)] > > Type "help", "copyright", "credits" or "license" for more information. > >>>> import copy > >>>> class atom(bytes): > > ... pass > > ... > >>>> copy.deepcopy(b'abc') > > b'abc' > >>>> copy.deepcopy(atom(b'abc')) > > Traceback (most recent call last): > > File "C:\Program Files (x86)\Wing IDE 3.2\src\debug\tserver > > \_sandbox.py", line 1, in<module> > > # Used internally for debug sandbox under external interpreter > > File "C:\Python31\Lib\copy.py", line 173, in deepcopy > > y = _reconstruct(x, rv, 1, memo) > > File "C:\Python31\Lib\copy.py", line 280, in _reconstruct > > y = callable(*args) > > File "C:\Python31\Lib\copyreg.py", line 88, in __newobj__ > > return cls.__new__(cls, *args) > > builtins.TypeError: string argument without an encoding > > You could trace through copy.py and copyreg.py to see where bytes and > atom get treated differently. > > This might be a bug that should be reported on the tracker, but I do not > know. Let see what anyone else says.
FWIW, the example still fails with Python 3.1.3 but seems to work OK with a recent alpha build of Python 3.2. What specific change might have fixed it doesn't come immediately to mind. -- Ned Deily, n...@acm.org -- http://mail.python.org/mailman/listinfo/python-list