>>> from plib.utils import version
>>> version.version_string((0, 2))
'0.2'
>>> version.version_string((0, 2, 1))
'0.2.1'
>>> version.version_string((0, 2, 1, None))
'0.2.1'
>>> version.version_string((0, 2, None))
'0.2'
>>> version.version_string((0, 0))
'0.0'
>>> version.version_string((1, 2, 'a'))
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/home/peter/lib/python2.4/site-packages/plib/utils/version.py", line 73, in version_string
    return str(PVersion(ver_t))
  File "/home/peter/lib/python2.4/site-packages/plib/utils/version.py", line 65, in __init__
    self._error_exit(ver)
  File "/home/peter/lib/python2.4/site-packages/plib/utils/version.py", line 35, in _error_exit
    raise ValueError, "Version tuple %s is invalid." % str(ver)
ValueError: Version tuple (1, 2, 'a') is invalid.
>>> version.version_string((1, 2, None, ('a', 3)))
'1.2a3'
>>> version.version_string((1, 2, 4, ('a', 3)))
'1.2.4a3'
>>> version.version_string((1, 2, 4, ('b', 5)))
'1.2.4b5'
>>> version.version_string((1, 2, 4, ('c', 6)))
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/home/peter/lib/python2.4/site-packages/plib/utils/version.py", line 73, in version_string
    return str(PVersion(ver_t))
  File "/home/peter/lib/python2.4/site-packages/plib/utils/version.py", line 65, in __init__
    self._error_exit(ver)
  File "/home/peter/lib/python2.4/site-packages/plib/utils/version.py", line 35, in _error_exit
    raise ValueError, "Version tuple %s is invalid." % str(ver)
ValueError: Version tuple (1, 2, 4, ('c', 6)) is invalid.
>>> version.version_string((1, 2, 4, ('c',)))
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/home/peter/lib/python2.4/site-packages/plib/utils/version.py", line 73, in version_string
    return str(PVersion(ver_t))
  File "/home/peter/lib/python2.4/site-packages/plib/utils/version.py", line 65, in __init__
    self._error_exit(ver)
  File "/home/peter/lib/python2.4/site-packages/plib/utils/version.py", line 35, in _error_exit
    raise ValueError, "Version tuple %s is invalid." % str(ver)
ValueError: Version tuple (1, 2, 4, ('c',)) is invalid.
>>> version.version_string((1, 2, 4, ('c', 'd')))
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/home/peter/lib/python2.4/site-packages/plib/utils/version.py", line 73, in version_string
    return str(PVersion(ver_t))
  File "/home/peter/lib/python2.4/site-packages/plib/utils/version.py", line 65, in __init__
    self._error_exit(ver)
  File "/home/peter/lib/python2.4/site-packages/plib/utils/version.py", line 35, in _error_exit
    raise ValueError, "Version tuple %s is invalid." % str(ver)
ValueError: Version tuple (1, 2, 4, ('c', 'd')) is invalid.
>>> version.version_string((1, 2, 4, ('c', 5, 0)))
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/home/peter/lib/python2.4/site-packages/plib/utils/version.py", line 73, in version_string
    return str(PVersion(ver_t))
  File "/home/peter/lib/python2.4/site-packages/plib/utils/version.py", line 65, in __init__
    self._error_exit(ver)
  File "/home/peter/lib/python2.4/site-packages/plib/utils/version.py", line 35, in _error_exit
    raise ValueError, "Version tuple %s is invalid." % str(ver)
ValueError: Version tuple (1, 2, 4, ('c', 5, 0)) is invalid.
>>> version.version_string((None, 0))
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/home/peter/lib/python2.4/site-packages/plib/utils/version.py", line 73, in version_string
    return str(PVersion(ver_t))
  File "/home/peter/lib/python2.4/site-packages/plib/utils/version.py", line 65, in __init__
    self._error_exit(ver)
  File "/home/peter/lib/python2.4/site-packages/plib/utils/version.py", line 35, in _error_exit
    raise ValueError, "Version tuple %s is invalid." % str(ver)
ValueError: Version tuple (None, 0) is invalid.
