Is there a package that makes traceback and error handling easier? - python

I come from a python background, and error traceback back there is so easy to follow and allows for quick exception identification.
I was wondering if there was a package or a plugin (VSCode) that formats or makes error tracing easier in Flutter.
For non Python user, here are two examples:
Traceback (most recent call last):
File "/path/to/example.py", line 4, in <module>
greet('Chad')
File "/path/to/example.py", line 2, in greet
print('Hello, ' + someon)
NameError: name 'someon' is not defined
$ python example.py
Traceback (most recent call last):
File "/path/to/greetings.py", line 19, in <module>
greet('Chad', greting='Yo')
TypeError: greet() got an unexpected keyword argument 'greting'

Related

get python Traceback in the powershell error handling

I've a python call from a powershell terminal.
minimalistic example:
Try {
& python "test.py"
}
Catch {
# Place individual error handling here
$ErrorMessage = "$($_.Exception.Message)"
}
echo $ErrorMessage
test.py raises an error, example content can be:
def make_sum():
return a+b
if __name__ == "__main__":
make_sum()
Why does the $ErrorMessage variable contain only the first line of python traceback?
Traceback (most recent call last):
I'd need complete call stack info as python provides:
Traceback (most recent call last):
File "d:/.../test.py", line 10, in <module>
make_sum()
File "d:/.../test.py", line 7, in make_sum
return a+b
NameError: name 'a' is not defined
Any advice how to get a complete traceback into the string variable in powershell?
Thank you,
Honza

Retrieve python traceback format from string

I have a string that is a python traceback collapsed into a single line. I want to retrieve the multiline format of the traceback for the sake of readability. What is the best way to achieve it?
I see that traceback module has similar functionality, but I don't see how to pass a string as an argument there:
https://docs.python.org/3/library/traceback.html
Example input:
'Traceback (most recent call last): File "<stdin>", line 1, in <module> Exception'
Example output:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
Exception

How to catch python exception and save traceback text as string

I'm trying to write a nice error handler for my code, so that when it fails, the logs, traceback and other relevant info get emailed to me.
I can't figure out how to take an exception object and extract the traceback.
I find the traceback module pretty confusing, mostly because it doesn't deal with exceptions at all. It just fetches some global variables from somewhere, assuming that I want the most recent exception. But what if I don't? What if I want to ignore some exception in my error handler? (e.g. if I fail to send me email and want to retry.)
What I want
import traceback as tb
# some function that will fail after a few recursions
def myfunc(x):
assert x > 0, "oh no"
return myfunc(x-1)
try:
myfunc(3)
except Exception as e:
traceback_str = tb.something(e)
Note that tb.something takes e as an argument.
There's lots of questions on Stack Overflow about using the traceback module to get a traceback string. The unique thing about this question is how to get it from the caught exception, instead of global variables.
Result:
traceback_str contains the string:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in myfunc
File "<stdin>", line 3, in myfunc
File "<stdin>", line 3, in myfunc
File "<stdin>", line 2, in myfunc
AssertionError: oh no
Note that it contains not just the most recent function call, but the whole stack, and includes the "AssertionError" at the end
The correct function for tb.something(e) is
''.join(tb.format_exception(None, e, e.__traceback__))

How to pretty print or format stack trace from python?

I receive python stack traces from logs and they sometimes come in very weird format, e.g. no new lines or incorrectly formated. Here is an syntactic example:
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in bar File "<stdin>", line 2, in foo ValueError
Unfortunately, there is no way I can change the format of the logs, as I don't have an access to that system.
Is there an automatic way of formatting those exceptions to standard python format, so that it would look something like this:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in bar
File "<stdin>", line 2, in foo
ValueError
I've quickly went through traceback module's documentation, but it seems it's only for runtime exceptions.

Error when calling gimp-drawable-set-pixel in gimp's python console

I'm typing this code directly into Gimp's Python Console:
img=gimp.image_list()[0]
drw = pdb.gimp_image_active_drawable(img)
gimp-drawable-set-pixel(drw,x,y,3,[0xff,0x00,0x00])
and it's yeilding this error after calling the gimp-drawable-set-pixel function:
Traceback (most recent call last):
File "<input>", line 1, in <module>
NameError: name 'drawable' is not defined
It yields the same error when called with four bytes instead of three bytes as well.
I'm using gimp 2.8.10 on Ubuntu 14.04.01 x86_64
I think it's a typo of gimp_drawable_set_pixel.
pdb.gimp_drawable_set_pixel(drw,x,y,3,[0xff,0x00,0x00])

Categories

Resources