/usr/lib/python3/dist-packages/openpyxl/utils/indexed_list.py is in python3-openpyxl 2.4.9-1.
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 | # Copyright (c) 2010-2017 openpyxl
class IndexedList(list):
"""
List with optimised access by value
Based on Alex Martelli's recipe
http://code.activestate.com/recipes/52303-the-auxiliary-dictionary-idiom-for-sequences-with-/
"""
def __init__(self, iterable=None):
self.clean = True
self._dict = {}
if iterable is not None:
self.clean = False
for idx, val in enumerate(iterable):
self._dict[val] = idx
list.append(self, val)
def _rebuild_dict(self):
self._dict = {}
idx = 0
for value in self:
if value not in self._dict:
self._dict[value] = idx
idx += 1
self.clean = True
def __contains__(self, value):
if not self.clean:
self._rebuild_dict()
return value in self._dict
def index(self, value):
if value in self:
return self._dict[value]
raise ValueError
def append(self, value):
if value not in self._dict:
self._dict[value] = len(self)
list.append(self, value)
def add(self, value):
self.append(value)
return self._dict[value]
|