Ron Adam <ron3...@gmail.com> added the comment:

Instead of a get_instructions() function, How about using a DisCode class that 
defines the API for accessing Opinfo tuples of a disassembled object.

So instead of...

    for instr in dis.bytecode_instructions(thing):
        process(instr)

You could use...

    for instr in dis.DisCode(thing):
        process(instr)

And I would like to be able to do...

    assertEqual(DisCode(thing1), DisCode(thing2))


It could also have a .dis() method that returns formatted output that matches 
what dis() currently prints.  That would allow tests that use dis.dis() to get 
rid of capturing stdout with minimal changes.

     result = DisCode(func).dis()  # return a dis compatible string.

A DisCode object also offers a nice place to put documentation for the various 
pieces and an overall view of the new API without getting it confused with the 
current dis.dis() API.

It's easier for me to remember an object with methods than several separate but 
related functions. (YMMV)

This is very near a version of dis I did a while back where I removed the 
prints and returned a list of list object from dis.dis().  The returned object 
had __repr__ that formatted the data so it matched the current dis output.  
That made it work the same in a python shell. But I could still access and 
alter individual lines and fields by indexing or iterating it.  While it worked 
nicely, it wouldn't be backwards compatible.

----------
nosy: +ron_adam

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue11816>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to