Skip to content

Instantly share code, notes, and snippets.

@briancline
Created March 5, 2014 19:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save briancline/9375064 to your computer and use it in GitHub Desktop.
Save briancline/9375064 to your computer and use it in GitHub Desktop.
Safe-ish version number list parsing from stdin
#!/usr/bin/env python
from __future__ import print_function
import sys
def _leloo_multiparse(v):
parse_fn = None
try:
import pkg_resources
parse_fn = pkg_resources.parse_version
except ImportError as ex_a:
try:
import distutils.version
parse_fn = distutils.version.StrictVersion
except ImportError as ex_b:
sys.stderr.writelines([
'ERROR: %s\n' % ex_a.message,
' %s\n' % ex_b.message,
' The sky is falling! No suitable version parsers!\n'])
sys.exit(1)
return parse_fn(v)
def sort_versions(x):
return sorted(x, key=_leloo_multiparse)
if __name__ == '__main__':
lines = map(str.strip, sys.stdin.readlines())
print(lines)
print(sort_versions(lines))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment