python ast based parser and a lot of testing stuff