In order to make tracebacks more useful for them, some advanced programmers have designed tools to add more information so that simply looking at the enhanced traceback might be sufficient to diagnose properly the problem. These tools include better_exchook, infi.traceback, rich-traceback, stackprinter, as well as the beautiful better-exceptions, and many others including Python's own cgitb module. While there is no doubt that the additional information provided by these tools is useful for advanced programmers, it would likely only add to their confusion if it were used by beginners.
Friendly-traceback, a project I have been working on, and mentioned briefly in an addendum of my last post, aims at improving the situation for beginners.
A quick example
Have a look at the following Python traceback that might be generated by code written by a beginner.
Compare this with the following when using Friendly-traceback's own REPL
The only thing that is shown in exactly the same way is the line showing the exception name an a message. Everything else can be made available in other languages as shown below with a French translation.
Currently, Friendly-traceback can offer a more helpful message than a normal Python traceback in approximately 50 different cases, most of which are cases of either TypeError or SyntaxError. My goal is to eventually include explanations for all standard Python exceptions, and include as many sub-cases as possible.
As shown above, it is possible to translate the information in any language. Currently, only English and French are included; inclusion of other languages will require the help of volunteers.
If you write programs with your own custom exceptions, it is possible to write them so that they could be interpreted correctly by Friendly-traceback. I have done so in another project, AvantPy, which I mentioned previously here. AvantPy includes 10 custom exceptions.
Both AvantPy and Friendly-traceback are available from Pypi. Contributors are most definitely welcome.
No comments:
Post a Comment