Message369483
| Author |
yselivanov |
| Recipients |
BTaskaya, aeros, asvetlov, carltongibson, chris.jerdonek, eamanu, felixxm, yselivanov |
| Date |
2020年05月21日.00:11:29 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1590019890.19.0.731143371768.issue40696@roundup.psfhosted.org> |
| In-reply-to |
| Content |
Just a note, __context__ cycles can theoretically be longer than 2 nodes. I've encountered cycles like `exc.__context__.__context__.__context__ is exc` a few times in my life, typically resulting from some weird third-party libraries.
The only solution is to use a `set()` collection to track already visited exceptions.
To make it fast I propose to modify the code to:
1. Do a fast traverse with a regular while loop without tracking (no set())
2. If the number of iterations is longer than 100 and there's still no top context found -- go to (3)
3. Do a slower implementation with set() |
|