Python: Catching Traceback.

For PyQT Development, i have noticed that when or if the application i am working on is crashing i never see the traceback. Using Pycharm IDE i can only get it to display the traceback if i run my app in Debug Mode, which is not always what i want for various reasons. So, after some googling around and experimenting, i have learned a way to properly display and also log (may be even to a file) the crash-reports as the happen.

Here is how to get this setup.

Assuming you are working with MVC type model (can be even super simple), in your ‘main’ module that fires off all other packages, you must defined a custom function, that will be used to handle the logging. Here is how i have it in a simple case:

import logging
import traceback
import sys

def crash_report(exctype, value, tb):
 """Custom Crash-Handler"""
 logger = logging.getLogger('myapp.crash_report')
 logger.critical("\n--- Logging error ---\n"
 "Message: My-App has experienced an unrecoverable error.\n"
 "Traceback: (Most recent call last)"
 )
 traceback.print_tb(tb)
 sys.exit(1)

Now, we need to override default python function, and give it our new function to use instead, we can simply do it like so:

sys.excepthook = crash_report

You only need to do it once, at the top level, and every time your application goes through some hard times, you will know why.

we can test it like this:

test = "mememe"
num = int(test)
Advertisements

MayaCharm

I love working with PyCharm IDE. One time few of my friends had suggested this IDE for work, and after getting used the configuration and setup i now cannot imagine working with something else…. However, for long time i had been having hard time setting up a production environment on my machines, due to long and exhausting process of conflagration… Until recently when on one of the tech-art forums i came about one post, linking to a wonderful plugin developed by Chris Cunningham. Thank you!

MayaCharm – is a great plugin for PyCharm IDE.

Python and VENV

When working with virtual env for python, some modules may not be found. I had ran into a problem where i was using a simple UI created using standard TkInter module, but when i tested my script on various python versions it gave me an error, reporting that Tcl was not properly installed. A solution for this was to update the  “activate”or”Activate.bat” for windows file and add “set "TCL_LIBRARY=PATH_TO_TCL" " located in the original install of the python version i was using.

Similar workflow should be used to help set additional pointer to other missing components.

referencing from Stackoverflow

Logarithmic spiral – 3DS MaxScript

Okay, so i remember getting deeper into this spiral RnD, and had been working on understanding different types of spirals.

Here is a result of my RnD that i did a while ago, using MaxScript:

--Basic start point,
pCenter = Dummy()
pCenter.scale = point3 0.05 0.05 0.05
pCenter.pos = point3 0 0 0
centerX = pCenter.position.x
centerY = pCenter.position.y
centerZ = pcenter.position.z

/*
Thank you:
https://swiftcoder.wordpress.com/2010/06/21/logarithmic-spiral-distance-field/

HINT: convert to and from

radians = degrees * (pi/180)

degrees = radians * (180/pi)

*/


--initial vars from formula:r = ae^{b*theta}\,
a = 0.0  -- controls the starting angle
b = 0.1  -- controls how tightly the spiral is wound.
t = 0.0  -- this is start angle

theta = t * (pi/180)

across = atan(1/b)
end = 180.0 -- specify max degrees

for theta = 0 to end do 
(
	r = pow e (b*theta)
	r *=0.01
	
	print r
	x = centerX + cos(theta) * r
	y = centerY + sin(theta) * r
	
	pt = Dummy()
	pt.scale = point3 0.1 0.1 0.1
	pt.pos = point3 x y centerZ
	
)

Archimedean spiral in maxScript

Hi everyone,  i was going through some files on my HDD and found short script that i wrote while researching few topics. this was rather to understand what Spirals were, math behind them and so on. I came about a number of code examples that helped me understand it much better. Here is more about Spirals -> Archimedean spiral

Below is a snippet of 3d MaxScript that i made:

--Basic start point,
pCenter = Dummy()
pCenter.scale = point3 0.05 0.05 0.05
pCenter.pos = point3 0 0 0
centerX = pCenter.position.x
centerY = pCenter.position.y
centerZ = pcenter.position.z

/*
HINT: convert to and from

radians = degrees * (pi/180)

degrees = radians * (180/pi)

*/


--initial vars from formula:r=a+b*theta
a = 0.0  --this will be replaced in params via centerX and centerY
b = 1.0  -- this is distance for offset
t = 0.0  -- this is start angle
theta = t * (pi/180)


end = 1440.0 -- specify max degrees

for theta =0 to end do 
(
	r = a + theta * b
	r *=0.1
	x = centerX + cos(theta) * r
	y = centerY + sin(theta) * r
	
	pt = Dummy()
	pt.scale = point3 0.1 0.1 0.1
	pt.pos = point3 x y centerZ
	
)

python and IDE-Editors – Few things to remember

for daily work i use some more or less suitable IDE’s for python development, like PyCharm, or Eclipce with pydev.

but i cannot go without my sublime editor

sublime already packaged with default python interpreter, which is what makes it super powerful out of the box python programming tool for quick scripts that do not require any custom modules or what not.

but when there is a need to switch to system-default or alternative version of python,

you can create a simple configuration.

more about this is described here