A python port of the node.js semver library