Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🔨 handle OSError cases where traceback frames occur from built… #13964

Conversation

hunhoon21
Copy link
Contributor

@hunhoon21 hunhoon21 commented Mar 7, 2023

workerB
… files

Hello. I'm not very familiar with open source contributions, so please bear with me if I'm a bit inexperienced.

Introduction

First of all, let me explain the background. 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.

                    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
                            )

Description

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.

@Carreau Carreau added this to the 8.12 milestone Mar 30, 2023
@Carreau Carreau merged commit 9202708 into ipython:main Mar 30, 2023
@hunhoon21 hunhoon21 deleted the enhancement/cover-cases-where-frame-is-built-object branch March 30, 2023 08:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants