[Distutils] sample version number code

Greg Stein gstein@lyra.org
Thu, 10 Dec 1998 12:31:29 -0800


Here is some sample code for version numbering, a-la-GJS.

#
# version numbering test code
#

samples = [
  '1.5.1',
  '1.5.2b2',
  '161',
  '3.10a',
  '8.02',
  '3.4j',
  '1996.07.12',
  '3.2.pl0',
  '3.1.1.6',
  '2g6',
  '11g',
  '0.960923',
  '2.2beta29',
  '1.13++',
  '5.5.kw',
  '2.0b1pl0',
  ]

import re
r = re.compile('([0-9]+|[a-z]+|\.)')

def removeall(l, v):
  while 1:
    try:
      l.remove(v)
    except ValueError:
      return

def vsn(s):
  comps = r.split(s)
  removeall(comps, '.')
  removeall(comps, '')
  for i in range(len(comps)):
    try:
      comps[i] = int(comps[i])
    except ValueError:
      pass
  return tuple(comps)

for s in samples:
  print vsn(s)

--
Greg Stein, http://www.lyra.org/