A PyQT GUI application for converting InfoLease report outputs into Excel files. Handles parsing and summarizing. Learns where files are meant to be store and compiles monthly and yearly summaries.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
InfoLeaseExtract/venv/Lib/site-packages/openpyxl/utils/indexed_list.py

49 lines
1.2 KiB

# Copyright (c) 2010-2022 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-/
"""
_dict = {}
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]