diff --git a/Lib/doctest.py b/Lib/doctest.py --- a/Lib/doctest.py +++ b/Lib/doctest.py @@ -542,7 +542,7 @@ # A callable returning a true value iff its argument is a blank line # or contains a single comment. - _IS_BLANK_OR_COMMENT = re.compile(r'^[ ]*(#.*)?$').match + _IS_BLANK_OR_COMMENT = staticmethod(re.compile(r'^[ ]*(#.*)?$').match) def parse(self, string, name=''): """ diff --git a/Lib/encodings/ascii.py b/Lib/encodings/ascii.py --- a/Lib/encodings/ascii.py +++ b/Lib/encodings/ascii.py @@ -14,8 +14,8 @@ # Note: Binding these as C functions will result in the class not # converting them to methods. This is intended. - encode = codecs.ascii_encode - decode = codecs.ascii_decode + encode = staticmethod(codecs.ascii_encode) + decode = staticmethod(codecs.ascii_decode) class IncrementalEncoder(codecs.IncrementalEncoder): def encode(self, input, final=False): @@ -33,8 +33,8 @@ class StreamConverter(StreamWriter,StreamReader): - encode = codecs.ascii_decode - decode = codecs.ascii_encode + encode = staticmethod(codecs.ascii_decode) + decode = staticmethod(codecs.ascii_encode) ### encodings module API diff --git a/Lib/encodings/big5.py b/Lib/encodings/big5.py --- a/Lib/encodings/big5.py +++ b/Lib/encodings/big5.py @@ -10,8 +10,8 @@ codec = _codecs_tw.getcodec('big5') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/big5hkscs.py b/Lib/encodings/big5hkscs.py --- a/Lib/encodings/big5hkscs.py +++ b/Lib/encodings/big5hkscs.py @@ -10,8 +10,8 @@ codec = _codecs_hk.getcodec('big5hkscs') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/charmap.py b/Lib/encodings/charmap.py --- a/Lib/encodings/charmap.py +++ b/Lib/encodings/charmap.py @@ -18,8 +18,8 @@ # Note: Binding these as C functions will result in the class not # converting them to methods. This is intended. - encode = codecs.charmap_encode - decode = codecs.charmap_decode + encode = staticmethod(codecs.charmap_encode) + decode = staticmethod(codecs.charmap_decode) class IncrementalEncoder(codecs.IncrementalEncoder): def __init__(self, errors='strict', mapping=None): diff --git a/Lib/encodings/cp932.py b/Lib/encodings/cp932.py --- a/Lib/encodings/cp932.py +++ b/Lib/encodings/cp932.py @@ -10,8 +10,8 @@ codec = _codecs_jp.getcodec('cp932') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/cp949.py b/Lib/encodings/cp949.py --- a/Lib/encodings/cp949.py +++ b/Lib/encodings/cp949.py @@ -10,8 +10,8 @@ codec = _codecs_kr.getcodec('cp949') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/cp950.py b/Lib/encodings/cp950.py --- a/Lib/encodings/cp950.py +++ b/Lib/encodings/cp950.py @@ -10,8 +10,8 @@ codec = _codecs_tw.getcodec('cp950') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/euc_jis_2004.py b/Lib/encodings/euc_jis_2004.py --- a/Lib/encodings/euc_jis_2004.py +++ b/Lib/encodings/euc_jis_2004.py @@ -10,8 +10,8 @@ codec = _codecs_jp.getcodec('euc_jis_2004') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/euc_jisx0213.py b/Lib/encodings/euc_jisx0213.py --- a/Lib/encodings/euc_jisx0213.py +++ b/Lib/encodings/euc_jisx0213.py @@ -10,8 +10,8 @@ codec = _codecs_jp.getcodec('euc_jisx0213') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/euc_jp.py b/Lib/encodings/euc_jp.py --- a/Lib/encodings/euc_jp.py +++ b/Lib/encodings/euc_jp.py @@ -10,8 +10,8 @@ codec = _codecs_jp.getcodec('euc_jp') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/euc_kr.py b/Lib/encodings/euc_kr.py --- a/Lib/encodings/euc_kr.py +++ b/Lib/encodings/euc_kr.py @@ -10,8 +10,8 @@ codec = _codecs_kr.getcodec('euc_kr') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/gb18030.py b/Lib/encodings/gb18030.py --- a/Lib/encodings/gb18030.py +++ b/Lib/encodings/gb18030.py @@ -10,8 +10,8 @@ codec = _codecs_cn.getcodec('gb18030') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/gb2312.py b/Lib/encodings/gb2312.py --- a/Lib/encodings/gb2312.py +++ b/Lib/encodings/gb2312.py @@ -10,8 +10,8 @@ codec = _codecs_cn.getcodec('gb2312') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/gbk.py b/Lib/encodings/gbk.py --- a/Lib/encodings/gbk.py +++ b/Lib/encodings/gbk.py @@ -10,8 +10,8 @@ codec = _codecs_cn.getcodec('gbk') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/hz.py b/Lib/encodings/hz.py --- a/Lib/encodings/hz.py +++ b/Lib/encodings/hz.py @@ -10,8 +10,8 @@ codec = _codecs_cn.getcodec('hz') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/iso2022_jp.py b/Lib/encodings/iso2022_jp.py --- a/Lib/encodings/iso2022_jp.py +++ b/Lib/encodings/iso2022_jp.py @@ -10,8 +10,8 @@ codec = _codecs_iso2022.getcodec('iso2022_jp') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/iso2022_jp_1.py b/Lib/encodings/iso2022_jp_1.py --- a/Lib/encodings/iso2022_jp_1.py +++ b/Lib/encodings/iso2022_jp_1.py @@ -10,8 +10,8 @@ codec = _codecs_iso2022.getcodec('iso2022_jp_1') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/iso2022_jp_2.py b/Lib/encodings/iso2022_jp_2.py --- a/Lib/encodings/iso2022_jp_2.py +++ b/Lib/encodings/iso2022_jp_2.py @@ -10,8 +10,8 @@ codec = _codecs_iso2022.getcodec('iso2022_jp_2') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/iso2022_jp_2004.py b/Lib/encodings/iso2022_jp_2004.py --- a/Lib/encodings/iso2022_jp_2004.py +++ b/Lib/encodings/iso2022_jp_2004.py @@ -10,8 +10,8 @@ codec = _codecs_iso2022.getcodec('iso2022_jp_2004') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/iso2022_jp_3.py b/Lib/encodings/iso2022_jp_3.py --- a/Lib/encodings/iso2022_jp_3.py +++ b/Lib/encodings/iso2022_jp_3.py @@ -10,8 +10,8 @@ codec = _codecs_iso2022.getcodec('iso2022_jp_3') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/iso2022_jp_ext.py b/Lib/encodings/iso2022_jp_ext.py --- a/Lib/encodings/iso2022_jp_ext.py +++ b/Lib/encodings/iso2022_jp_ext.py @@ -10,8 +10,8 @@ codec = _codecs_iso2022.getcodec('iso2022_jp_ext') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/iso2022_kr.py b/Lib/encodings/iso2022_kr.py --- a/Lib/encodings/iso2022_kr.py +++ b/Lib/encodings/iso2022_kr.py @@ -10,8 +10,8 @@ codec = _codecs_iso2022.getcodec('iso2022_kr') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/johab.py b/Lib/encodings/johab.py --- a/Lib/encodings/johab.py +++ b/Lib/encodings/johab.py @@ -10,8 +10,8 @@ codec = _codecs_kr.getcodec('johab') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/latin_1.py b/Lib/encodings/latin_1.py --- a/Lib/encodings/latin_1.py +++ b/Lib/encodings/latin_1.py @@ -14,8 +14,8 @@ # Note: Binding these as C functions will result in the class not # converting them to methods. This is intended. - encode = codecs.latin_1_encode - decode = codecs.latin_1_decode + encode = staticmethod(codecs.latin_1_encode) + decode = staticmethod(codecs.latin_1_decode) class IncrementalEncoder(codecs.IncrementalEncoder): def encode(self, input, final=False): @@ -33,8 +33,8 @@ class StreamConverter(StreamWriter,StreamReader): - encode = codecs.latin_1_decode - decode = codecs.latin_1_encode + encode = staticmethod(codecs.latin_1_decode) + decode = staticmethod(codecs.latin_1_encode) ### encodings module API diff --git a/Lib/encodings/mbcs.py b/Lib/encodings/mbcs.py --- a/Lib/encodings/mbcs.py +++ b/Lib/encodings/mbcs.py @@ -25,13 +25,13 @@ return mbcs_encode(input, self.errors)[0] class IncrementalDecoder(codecs.BufferedIncrementalDecoder): - _buffer_decode = mbcs_decode + _buffer_decode = staticmethod(mbcs_decode) class StreamWriter(codecs.StreamWriter): - encode = mbcs_encode + encode = staticmethod(mbcs_encode) class StreamReader(codecs.StreamReader): - decode = mbcs_decode + decode = staticmethod(mbcs_decode) ### encodings module API diff --git a/Lib/encodings/raw_unicode_escape.py b/Lib/encodings/raw_unicode_escape.py --- a/Lib/encodings/raw_unicode_escape.py +++ b/Lib/encodings/raw_unicode_escape.py @@ -14,8 +14,8 @@ # Note: Binding these as C functions will result in the class not # converting them to methods. This is intended. - encode = codecs.raw_unicode_escape_encode - decode = codecs.raw_unicode_escape_decode + encode = staticmethod(codecs.raw_unicode_escape_encode) + decode = staticmethod(codecs.raw_unicode_escape_decode) class IncrementalEncoder(codecs.IncrementalEncoder): def encode(self, input, final=False): diff --git a/Lib/encodings/shift_jis.py b/Lib/encodings/shift_jis.py --- a/Lib/encodings/shift_jis.py +++ b/Lib/encodings/shift_jis.py @@ -10,8 +10,8 @@ codec = _codecs_jp.getcodec('shift_jis') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/shift_jis_2004.py b/Lib/encodings/shift_jis_2004.py --- a/Lib/encodings/shift_jis_2004.py +++ b/Lib/encodings/shift_jis_2004.py @@ -10,8 +10,8 @@ codec = _codecs_jp.getcodec('shift_jis_2004') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/shift_jisx0213.py b/Lib/encodings/shift_jisx0213.py --- a/Lib/encodings/shift_jisx0213.py +++ b/Lib/encodings/shift_jisx0213.py @@ -10,8 +10,8 @@ codec = _codecs_jp.getcodec('shift_jisx0213') class Codec(codecs.Codec): - encode = codec.encode - decode = codec.decode + encode = staticmethod(codec.encode) + decode = staticmethod(codec.decode) class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): diff --git a/Lib/encodings/unicode_escape.py b/Lib/encodings/unicode_escape.py --- a/Lib/encodings/unicode_escape.py +++ b/Lib/encodings/unicode_escape.py @@ -14,8 +14,8 @@ # Note: Binding these as C functions will result in the class not # converting them to methods. This is intended. - encode = codecs.unicode_escape_encode - decode = codecs.unicode_escape_decode + encode = staticmethod(codecs.unicode_escape_encode) + decode = staticmethod(codecs.unicode_escape_decode) class IncrementalEncoder(codecs.IncrementalEncoder): def encode(self, input, final=False): diff --git a/Lib/encodings/unicode_internal.py b/Lib/encodings/unicode_internal.py --- a/Lib/encodings/unicode_internal.py +++ b/Lib/encodings/unicode_internal.py @@ -14,8 +14,8 @@ # Note: Binding these as C functions will result in the class not # converting them to methods. This is intended. - encode = codecs.unicode_internal_encode - decode = codecs.unicode_internal_decode + encode = staticmethod(codecs.unicode_internal_encode) + decode = staticmethod(codecs.unicode_internal_decode) class IncrementalEncoder(codecs.IncrementalEncoder): def encode(self, input, final=False): diff --git a/Lib/encodings/utf_16_be.py b/Lib/encodings/utf_16_be.py --- a/Lib/encodings/utf_16_be.py +++ b/Lib/encodings/utf_16_be.py @@ -20,13 +20,13 @@ return codecs.utf_16_be_encode(input, self.errors)[0] class IncrementalDecoder(codecs.BufferedIncrementalDecoder): - _buffer_decode = codecs.utf_16_be_decode + _buffer_decode = staticmethod(codecs.utf_16_be_decode) class StreamWriter(codecs.StreamWriter): - encode = codecs.utf_16_be_encode + encode = staticmethod(codecs.utf_16_be_encode) class StreamReader(codecs.StreamReader): - decode = codecs.utf_16_be_decode + decode = staticmethod(codecs.utf_16_be_decode) ### encodings module API diff --git a/Lib/encodings/utf_16_le.py b/Lib/encodings/utf_16_le.py --- a/Lib/encodings/utf_16_le.py +++ b/Lib/encodings/utf_16_le.py @@ -20,13 +20,13 @@ return codecs.utf_16_le_encode(input, self.errors)[0] class IncrementalDecoder(codecs.BufferedIncrementalDecoder): - _buffer_decode = codecs.utf_16_le_decode + _buffer_decode = staticmethod(codecs.utf_16_le_decode) class StreamWriter(codecs.StreamWriter): - encode = codecs.utf_16_le_encode + encode = staticmethod(codecs.utf_16_le_encode) class StreamReader(codecs.StreamReader): - decode = codecs.utf_16_le_decode + decode = staticmethod(codecs.utf_16_le_decode) ### encodings module API diff --git a/Lib/encodings/utf_32_be.py b/Lib/encodings/utf_32_be.py --- a/Lib/encodings/utf_32_be.py +++ b/Lib/encodings/utf_32_be.py @@ -15,13 +15,13 @@ return codecs.utf_32_be_encode(input, self.errors)[0] class IncrementalDecoder(codecs.BufferedIncrementalDecoder): - _buffer_decode = codecs.utf_32_be_decode + _buffer_decode = staticmethod(codecs.utf_32_be_decode) class StreamWriter(codecs.StreamWriter): - encode = codecs.utf_32_be_encode + encode = staticmethod(codecs.utf_32_be_encode) class StreamReader(codecs.StreamReader): - decode = codecs.utf_32_be_decode + decode = staticmethod(codecs.utf_32_be_decode) ### encodings module API diff --git a/Lib/encodings/utf_32_le.py b/Lib/encodings/utf_32_le.py --- a/Lib/encodings/utf_32_le.py +++ b/Lib/encodings/utf_32_le.py @@ -15,13 +15,13 @@ return codecs.utf_32_le_encode(input, self.errors)[0] class IncrementalDecoder(codecs.BufferedIncrementalDecoder): - _buffer_decode = codecs.utf_32_le_decode + _buffer_decode = staticmethod(codecs.utf_32_le_decode) class StreamWriter(codecs.StreamWriter): - encode = codecs.utf_32_le_encode + encode = staticmethod(codecs.utf_32_le_encode) class StreamReader(codecs.StreamReader): - decode = codecs.utf_32_le_decode + decode = staticmethod(codecs.utf_32_le_decode) ### encodings module API diff --git a/Lib/encodings/utf_7.py b/Lib/encodings/utf_7.py --- a/Lib/encodings/utf_7.py +++ b/Lib/encodings/utf_7.py @@ -16,13 +16,13 @@ return codecs.utf_7_encode(input, self.errors)[0] class IncrementalDecoder(codecs.BufferedIncrementalDecoder): - _buffer_decode = codecs.utf_7_decode + _buffer_decode = staticmethod(codecs.utf_7_decode) class StreamWriter(codecs.StreamWriter): - encode = codecs.utf_7_encode + encode = staticmethod(codecs.utf_7_encode) class StreamReader(codecs.StreamReader): - decode = codecs.utf_7_decode + decode = staticmethod(codecs.utf_7_decode) ### encodings module API diff --git a/Lib/encodings/utf_8.py b/Lib/encodings/utf_8.py --- a/Lib/encodings/utf_8.py +++ b/Lib/encodings/utf_8.py @@ -20,13 +20,13 @@ return codecs.utf_8_encode(input, self.errors)[0] class IncrementalDecoder(codecs.BufferedIncrementalDecoder): - _buffer_decode = codecs.utf_8_decode + _buffer_decode = staticmethod(codecs.utf_8_decode) class StreamWriter(codecs.StreamWriter): - encode = codecs.utf_8_encode + encode = staticmethod(codecs.utf_8_encode) class StreamReader(codecs.StreamReader): - decode = codecs.utf_8_decode + decode = staticmethod(codecs.utf_8_decode) ### encodings module API diff --git a/Lib/tempfile.py b/Lib/tempfile.py --- a/Lib/tempfile.py +++ b/Lib/tempfile.py @@ -380,7 +380,7 @@ # that this must be referenced as self.unlink, because the # name TemporaryFileWrapper may also get None'd out before # __del__ is called. - unlink = _os.unlink + unlink = staticmethod(_os.unlink) def close(self): if not self.close_called: @@ -663,8 +663,8 @@ _isdir = staticmethod(_os.path.isdir) _remove = staticmethod(_os.remove) _rmdir = staticmethod(_os.rmdir) - _os_error = _os.error - _warn = _warnings.warn + _os_error = staticmethod(_os.error) + _warn = staticmethod(_warnings.warn) def _rmtree(self, path): # Essentially a stripped down version of shutil.rmtree. We can't diff --git a/Lib/test/test_bufio.py b/Lib/test/test_bufio.py --- a/Lib/test/test_bufio.py +++ b/Lib/test/test_bufio.py @@ -63,7 +63,7 @@ class CBufferSizeTest(BufferSizeTest): - open = io.open + open = staticmethod(io.open) class PyBufferSizeTest(BufferSizeTest): open = staticmethod(pyio.open) diff --git a/Lib/test/test_file.py b/Lib/test/test_file.py --- a/Lib/test/test_file.py +++ b/Lib/test/test_file.py @@ -129,7 +129,7 @@ self.assertRaises(IOError, self.f.read) class CAutoFileTests(AutoFileTests): - open = io.open + open = staticmethod(io.open) class PyAutoFileTests(AutoFileTests): open = staticmethod(pyio.open) @@ -323,7 +323,7 @@ os.unlink(TESTFN) class COtherFileTests(OtherFileTests): - open = io.open + open = staticmethod(io.open) class PyOtherFileTests(OtherFileTests): open = staticmethod(pyio.open) diff --git a/Lib/test/test_functools.py b/Lib/test/test_functools.py --- a/Lib/test/test_functools.py +++ b/Lib/test/test_functools.py @@ -355,7 +355,7 @@ self.assertEqual(wrapper.dict_attr, f.dict_attr) class TestReduce(unittest.TestCase): - func = functools.reduce + func = staticmethod(functools.reduce) def test_reduce(self): class Squares: diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py --- a/Lib/test/test_io.py +++ b/Lib/test/test_io.py @@ -2833,7 +2833,8 @@ c_io_ns.update((x.__name__, globs["C" + x.__name__]) for x in mocks) py_io_ns.update((x.__name__, globs["Py" + x.__name__]) for x in mocks) # Avoid turning open into a bound method. - py_io_ns["open"] = pyio.OpenWrapper + c_io_ns["open"] = staticmethod(io.open) + py_io_ns["open"] = staticmethod(pyio.open) for test in tests: if test.__name__.startswith("C"): for name, obj in c_io_ns.items(): diff --git a/Lib/test/test_thread.py b/Lib/test/test_thread.py --- a/Lib/test/test_thread.py +++ b/Lib/test/test_thread.py @@ -191,7 +191,7 @@ self.done_mutex.release() class LockTests(lock_tests.LockTests): - locktype = thread.allocate_lock + locktype = staticmethod(thread.allocate_lock) class TestForkInThread(unittest.TestCase): diff --git a/Lib/test/test_univnewlines.py b/Lib/test/test_univnewlines.py --- a/Lib/test/test_univnewlines.py +++ b/Lib/test/test_univnewlines.py @@ -115,7 +115,7 @@ # Test the C and Python implementations. for test in base_tests: class CTest(test): - open = io.open + open = staticmethod(io.open) CTest.__name__ = "C" + test.__name__ class PyTest(test): open = staticmethod(pyio.open) diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py --- a/Lib/test/test_urllib2.py +++ b/Lib/test/test_urllib2.py @@ -257,6 +257,8 @@ self.action = action def __call__(self, *args): return self.handle(self.meth_name, self.action, *args) + def __get__(self, inst, inst_type=None): + return self class MockHTTPResponse(io.IOBase): def __init__(self, fp, msg, status, reason): diff --git a/Objects/object.c b/Objects/object.c --- a/Objects/object.c +++ b/Objects/object.c @@ -1029,6 +1029,14 @@ } if (descr != NULL) { + if (PyCallable_Check(descr) && !PyType_Check(descr)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "callable, non-descriptor class " + "attribute %R of %R", name, obj) < 0) { + Py_DECREF(descr); + goto done; + } + } res = descr; /* descr was already increfed above */ goto done;