##// END OF EJS Templates
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.
Matthias Bussonnier -
r28196:92027083 merge
Show More

Documenting What's New

When making a new pull request that either adds a new feature, or makes a
backwards-incompatible change to IPython, please add a new .rst file in this
directory documenting this change as a part of your Pull Request.

This will allow multiple Pull Requests to do the same without conflicting with
one another. Periodically, IPython developers with commit rights will run a
script and populate development.rst
with the contents of this directory, and clean it up.

Files which describe new features can have any name, such as
antigravity-feature.rst, whereas backwards incompatible changes must have
have a filename starting with incompat-, such as
incompat-switching-to-perl.rst. Our "What's new" files always have two
sections, and this prefix scheme will make sure that the backwards incompatible
changes get routed to their proper section.

To merge these files into :file:whatsnew/development.rst, run the script :file:tools/update_whatsnew.py.