This file is indexed.

/usr/share/python-support/private/parseversions is in python-support 1.0.15.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
#! /usr/bin/python
#
# copyright (c) 2006 Josselin Mouette <joss@debian.org>
# Licensed under the GNU Lesser General Public License, version 2.1
# See COPYING for details

from optparse import OptionParser
import sys,os.path
sys.path.append("/usr/share/python-support/private/")
import pysupport

parser = OptionParser(usage="usage: %prog [options] file.pyversions")

parser.add_option ("--minmax", action="store_true", dest="minmax", help="display minimum and maximum python versions described by the file", default=False)
parser.add_option ("-l", "--long", action="store_true", dest="long", help='prepend versions with "python"',default=False)
parser.add_option ("--pycentral", action="store_true", dest="pycentral", help="Parse a pycentral-type version string instead",default=False)
parser.add_option ("--raw", action="store_true", dest="raw", help="Output the raw input string (useful with --pycentral)",default=False)
parser.add_option ("--all", action="store_true", dest="all", help="List all supported versions instead of parsing a file",default=False)

(options, args) = parser.parse_args()

if options.all:
  f=iter(['-'])
else:
  if len(args) < 1:
    f=sys.stdin
  else:
    f=file(args[0])

if options.pycentral:
  import re
  l=None
  paraborder=True
  for line in f:
    line=line.strip()
    if line.startswith('#') or not line: # Empty line or comment
      if paraborder==True:
        # We're at the beginning of debian/control
        continue
      # We reached the end of the first paragraph, don't keep on reading
      break
    paraborder=False
    if line.lower().startswith(("xs-python-version:", "x-python-version:")):
      l=line.split(':')[1]
      break
  if not l: 
    print "X(S)-Python-Version header not found."
    sys.exit(1)
  min=max=""
  out=[]
  for elem in l.split(','):
    elem=elem.strip()
    if elem=="all":
      min=max=""
      out=["-"]
      break
    if elem=="current":
      out.append(os.readlink("/usr/bin/python")[6:])
      continue
    a=re.match(">=\s*([\d\.]+)",elem)
    if a:
      min=a.group(1)
      continue
    a=re.match("<<\s*([\d\.]+)",elem)
    if a:
      try:
        max=a.group(1).split(".")
        max[1]=`int(max[1])-1`
        max='.'.join(max)
      except IndexError:
        max=""
      continue
    a=re.match("^[\d\.]+$",elem)
    if a:
      out.append(elem)
  if min or max:
    out.append(min+"-"+max)
  stringtoparse=','.join(out)
else:
  stringtoparse=f.next()
  if stringtoparse.startswith("pyversions") and "=" in stringtoparse:
    # Case of a .public file with version info
    stringtoparse = stringtoparse.split("=",1)[1]
  elif stringtoparse.startswith("/"):
    # Case of a .public file without version info
    stringtoparse = "-"

if options.raw:
  print stringtoparse.rstrip('\n')
  sys.exit(0)

v=pysupport.version_list(stringtoparse)
if options.long:
  print ' '.join(v)
else:
  print ' '.join(v.verlist)

if options.minmax:
  min=v.min
  if options.long and min: min="python"+min
  max=v.max
  if options.long and max: max="python"+max
  print min, max