diff -r b88525a8c01d Lib/codecs.py --- a/Lib/codecs.py Thu Jul 03 06:25:10 2014 +0300 +++ b/Lib/codecs.py Thu Jul 03 14:45:48 2014 +0200 @@ -103,6 +103,9 @@ (self.__class__.__module__, self.__class__.__name__, self.name, id(self)) + def __getnewargs__(self): + return tuple(self) + class Codec: """ Defines the interface for stateless encoders/decoders. diff -r b88525a8c01d Lib/test/test_codecs.py --- a/Lib/test/test_codecs.py Thu Jul 03 06:25:10 2014 +0300 +++ b/Lib/test/test_codecs.py Thu Jul 03 14:45:48 2014 +0200 @@ -1,5 +1,6 @@ import codecs import contextlib +import copy import io import locale import sys @@ -1654,6 +1655,16 @@ c = codecs.lookup('ASCII') self.assertEqual(c.name, 'ascii') +class CodecInfoTest(unittest.TestCase): + def test_copy(self): + orig = codecs.lookup('utf-8') + dup = copy.copy(orig) + + assert dup.encode == orig.encode + assert dup.name == orig.name + assert dup.incrementalencoder == orig.incrementalencoder + + class StreamReaderTest(unittest.TestCase): def setUp(self):