/usr/lib/python3/dist-packages/axi/__init__.py is in apt-xapian-index 0.47ubuntu13.
This file is owned by root:root, with mode 0o644.
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 | #
# axi - apt-xapian-index python modules
#
# Copyright (C) 2007--2010 Enrico Zini <enrico@debian.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
from __future__ import print_function
import os
import os.path
import sys
import re
# Setup configuration
PLUGINDIR = os.environ.get("AXI_PLUGIN_DIR", "/usr/share/apt-xapian-index/plugins")
XAPIANDBPATH = os.environ.get("AXI_DB_PATH", "/var/lib/apt-xapian-index")
XAPIANDBSTAMP = os.path.join(XAPIANDBPATH, "update-timestamp")
XAPIANDBLOCK = os.path.join(XAPIANDBPATH, "update-lock")
XAPIANDBUPDATESOCK = os.path.join(XAPIANDBPATH, "update-socket")
XAPIANDBVALUES = os.path.join(XAPIANDBPATH, "values")
XAPIANDBPREFIXES = os.path.join(XAPIANDBPATH, "prefixes")
XAPIANDBDOC = os.path.join(XAPIANDBPATH, "README")
XAPIANINDEX = os.path.join(XAPIANDBPATH, "index")
XAPIANCACHEPATH = os.environ.get("AXI_CACHE_PATH", "/var/cache/apt-xapian-index")
# Default value database in case one cannot be read
DEFAULT_VALUES = dict(version=0, installedsize=1, packagesize=2)
DEFAULT_VALUE_DESCS = dict(
version="package version",
installedsize="installed size",
packagesize="package size"
)
def readValueDB(pathname=XAPIANDBVALUES, quiet=False):
"""
Read the "/etc/services"-style database of value indices
"""
try:
re_empty = re.compile("^\s*(?:#.*)?$")
re_value = re.compile("^(\S+)\s+(\d+)(?:\s*#\s*(.+))?$")
values = {}
descs = {}
for idx, line in enumerate(open(pathname)):
# Skip empty lines and comments
if re_empty.match(line): continue
# Parse teh rest
mo = re_value.match(line)
if not mo:
if not quiet:
print("%s:%d: line is not `name value [# description]': ignored" % (pathname, idx+1), file=sys.stderr)
continue
# Parse the number
name = mo.group(1)
number = int(mo.group(2))
desc = mo.group(3) or ""
values[name] = number
descs[name] = desc
if not values:
raise BrokenIndexError
except (OSError, IOError, BrokenIndexError) as e:
# If we can't read the database, fallback to defaults
if not quiet:
print("%s: %s. Falling back on a default value database" % (pathname, e), file=sys.stderr)
values = DEFAULT_VALUES
descs = DEFAULT_VALUE_DESCS
return values, descs
class BrokenIndexError(Exception):
pass
|