Mark Shannon <[email protected]> added the comment:
dis is able to handle code with no line numbers.
>>> def f(): pass
...
>>> co = f.__code__.replace(co_linetable=b'\xff')
>>> list(co.co_lines())
[]
>>> import dis
>>> dis.dis(co)
0 LOAD_CONST 0 (None)
2 RETURN_VALUE
The problem with the example Serhiy gives is that the line number table does
not end in a sentinel value.
You shouldn't be creating code objects unless you really know what you are
doing. I.e. never.
For manually created code objects that don't respect the invariants, any
behavior is acceptable IMO.
----------
assignee: -> Mark.Shannon
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue42739>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com