Handle OSError cases where traceback frames occur from built files (#13964)...
Handle OSError cases where traceback frames occur from built files (#13964)
I've been using the `_render_traceback_` method of the traceback object, provided by the
`IPython.core.interactiveshell.InteractiveShell` object that you
created, in the `showtraceback` method. Thanks to this, I was able to
create better error messages. I appreciate it. The following issue is
related to the use of this method.
```python
try:
# Exception classes can customise their traceback - we
# use this in IPython.parallel for exceptions occurring
# in the engines. This should return a list of strings.
if hasattr(value, "_render_traceback_"):
stb = value._render_traceback_()
else:
stb = self.InteractiveTB.structured_traceback(
etype, value, tb, tb_offset=tb_offset
)
```
I noticed that in the recent `8.11` version, code was added to generate
a traceback when the source code is too long. In this case, if the
`etb.tb_frame` object is a built file or something similar, the
`inspect.getsourcelines(etb.tb_frame)` method may raise an error. So I
implemented a change to set the `max_len` to the minimum value and avoid
the following condition when an `OSError` occurs. I think this approach
can handle cases where errors occur while using the
`inspect.getsourcelines()` method.
If there is anything I have done wrong or any procedures I should
follow, please let me know. I would greatly appreciate it if you could
leave a comment and I will make the necessary changes immediately. Thank
you.