diff -r 1947cca7f583 Include/descrobject.h --- a/Include/descrobject.h Tue Mar 08 22:54:11 2011 +0000 +++ b/Include/descrobject.h Fri Mar 11 14:51:18 2011 -0500 @@ -35,6 +35,7 @@ /* Flags for above struct */ #define PyWrapperFlag_KEYWORDS 1 /* wrapper function takes keyword args */ +#define PyWrapperFlag_STATIC 2 /* Various kinds of descriptor objects */ diff -r 1947cca7f583 Lib/doctest.py --- a/Lib/doctest.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/doctest.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/ascii.py --- a/Lib/encodings/ascii.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/ascii.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/big5.py --- a/Lib/encodings/big5.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/big5.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/big5hkscs.py --- a/Lib/encodings/big5hkscs.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/big5hkscs.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/charmap.py --- a/Lib/encodings/charmap.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/charmap.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/cp932.py --- a/Lib/encodings/cp932.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/cp932.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/cp949.py --- a/Lib/encodings/cp949.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/cp949.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/cp950.py --- a/Lib/encodings/cp950.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/cp950.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/euc_jis_2004.py --- a/Lib/encodings/euc_jis_2004.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/euc_jis_2004.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/euc_jisx0213.py --- a/Lib/encodings/euc_jisx0213.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/euc_jisx0213.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/euc_jp.py --- a/Lib/encodings/euc_jp.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/euc_jp.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/euc_kr.py --- a/Lib/encodings/euc_kr.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/euc_kr.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/gb18030.py --- a/Lib/encodings/gb18030.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/gb18030.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/gb2312.py --- a/Lib/encodings/gb2312.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/gb2312.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/gbk.py --- a/Lib/encodings/gbk.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/gbk.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/hz.py --- a/Lib/encodings/hz.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/hz.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/iso2022_jp.py --- a/Lib/encodings/iso2022_jp.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/iso2022_jp.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/iso2022_jp_1.py --- a/Lib/encodings/iso2022_jp_1.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/iso2022_jp_1.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/iso2022_jp_2.py --- a/Lib/encodings/iso2022_jp_2.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/iso2022_jp_2.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/iso2022_jp_2004.py --- a/Lib/encodings/iso2022_jp_2004.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/iso2022_jp_2004.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/iso2022_jp_3.py --- a/Lib/encodings/iso2022_jp_3.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/iso2022_jp_3.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/iso2022_jp_ext.py --- a/Lib/encodings/iso2022_jp_ext.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/iso2022_jp_ext.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/iso2022_kr.py --- a/Lib/encodings/iso2022_kr.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/iso2022_kr.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/johab.py --- a/Lib/encodings/johab.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/johab.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/latin_1.py --- a/Lib/encodings/latin_1.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/latin_1.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/mbcs.py --- a/Lib/encodings/mbcs.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/mbcs.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/raw_unicode_escape.py --- a/Lib/encodings/raw_unicode_escape.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/raw_unicode_escape.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/shift_jis.py --- a/Lib/encodings/shift_jis.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/shift_jis.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/shift_jis_2004.py --- a/Lib/encodings/shift_jis_2004.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/shift_jis_2004.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/shift_jisx0213.py --- a/Lib/encodings/shift_jisx0213.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/shift_jisx0213.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/unicode_escape.py --- a/Lib/encodings/unicode_escape.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/unicode_escape.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/unicode_internal.py --- a/Lib/encodings/unicode_internal.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/unicode_internal.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/utf_16_be.py --- a/Lib/encodings/utf_16_be.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/utf_16_be.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/utf_16_le.py --- a/Lib/encodings/utf_16_le.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/utf_16_le.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/utf_32_be.py --- a/Lib/encodings/utf_32_be.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/utf_32_be.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/utf_32_le.py --- a/Lib/encodings/utf_32_le.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/utf_32_le.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/utf_7.py --- a/Lib/encodings/utf_7.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/utf_7.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/encodings/utf_8.py --- a/Lib/encodings/utf_8.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/encodings/utf_8.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/tempfile.py --- a/Lib/tempfile.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/tempfile.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/test/test_bufio.py --- a/Lib/test/test_bufio.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/test/test_bufio.py Fri Mar 11 14:51:18 2011 -0500 @@ -63,7 +63,7 @@ class CBufferSizeTest(BufferSizeTest): - open = io.open + open = staticmethod(io.open) class PyBufferSizeTest(BufferSizeTest): open = staticmethod(pyio.open) diff -r 1947cca7f583 Lib/test/test_file.py --- a/Lib/test/test_file.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/test/test_file.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/test/test_functools.py --- a/Lib/test/test_functools.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/test/test_functools.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/test/test_io.py --- a/Lib/test/test_io.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/test/test_io.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/test/test_thread.py --- a/Lib/test/test_thread.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/test/test_thread.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/test/test_univnewlines.py --- a/Lib/test/test_univnewlines.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/test/test_univnewlines.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/test/test_urllib2.py --- a/Lib/test/test_urllib2.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/test/test_urllib2.py Fri Mar 11 14:51:18 2011 -0500 @@ -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 -r 1947cca7f583 Lib/unittest/case.py --- a/Lib/unittest/case.py Tue Mar 08 22:54:11 2011 +0000 +++ b/Lib/unittest/case.py Fri Mar 11 14:51:18 2011 -0500 @@ -249,7 +249,7 @@ # the instance's assertion methods fail; test methods raising this # exception will be deemed to have 'failed' rather than 'errored' - failureException = AssertionError + failureException = staticmethod(AssertionError) # This attribute determines whether long messages (including repr of # objects used in assert methods) will be printed on failure in *addition* @@ -493,6 +493,9 @@ def __call__(self, *args, **kwds): return self.run(*args, **kwds) + def __get__(self, inst, inst_type=None): + return self + def debug(self): """Run the test without collecting errors in a TestResult""" self.setUp() diff -r 1947cca7f583 Objects/object.c --- a/Objects/object.c Tue Mar 08 22:54:11 2011 +0000 +++ b/Objects/object.c Fri Mar 11 14:51:18 2011 -0500 @@ -1029,6 +1029,15 @@ } if (descr != NULL) { + if (PyCallable_Check(descr) && !PyType_Check(descr)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "callable, non-descriptor class " + "attribute %S of %R (%R)", + name, obj, descr) < 0) { + Py_DECREF(descr); + goto done; + } + } res = descr; /* descr was already increfed above */ goto done; diff -r 1947cca7f583 Objects/typeobject.c --- a/Objects/typeobject.c Tue Mar 08 22:54:11 2011 +0000 +++ b/Objects/typeobject.c Fri Mar 11 14:51:18 2011 -0500 @@ -4561,7 +4561,8 @@ } static struct PyMethodDef tp_new_methoddef[] = { - {"__new__", (PyCFunction)tp_new_wrapper, METH_VARARGS|METH_KEYWORDS, + {"__new__", (PyCFunction)tp_new_wrapper, + METH_VARARGS|METH_KEYWORDS|METH_STATIC, PyDoc_STR("T.__new__(S, ...) -> " "a new object with type S, a subtype of T")}, {0}