New submission from Ozgur Dogan Ugurlu <dog...@gmail.com>: The documentation says:
dis.dis([bytesource]) Disassemble the bytesource object. bytesource can denote either a module, a class, a method, a function, or a code object. For a module, it disassembles all functions. For a class, it disassembles all methods. For a single code sequence, it prints one line per bytecode instruction. If no object is provided, it disassembles the last traceback. And the behavior is correct for old-style classes. However, since the if check in the function dis.dis is like this: if hasattr(x, '__dict__'): items = x.__dict__.items() items.sort() for name, x1 in items: if type(x1) in (types.MethodType, types.FunctionType, types.CodeType, types.ClassType): when given a module (x), it doesn't handle new-style classes which are types.TypeType. (types.ClassType are old-style classes) A simple addition of types.TypeType to the list used by the inner if clause fixes the problem for me but I don't know if it could introduce another bug. ---------- components: Library (Lib) messages: 102338 nosy: dogeen severity: normal status: open title: dis.dis function skips new-style classes in a module type: behavior versions: Python 2.6 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue8310> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com