Ron Adam <[email protected]> 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 <[email protected]>
<http://bugs.python.org/issue11816>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com