import atexit import itertools import os import select import toml from ._logger_ import log from ._path_ import Path from ._ansii_ import cl # TODO depricate class Tracker: __slots__ = ('path', 'fp', 'data') def __init__(_, path): defl.depricateWarning() data = {} if os.path.isfile(path): with open(path, 'r', encoding='utf8') as fp: data = fp.read() data = data.split('\n') data = list(filter(lambda x: x, data)) data = [x.strip() for x in data] data = {x: True for x in data} else: open(path, 'w', encoding='utf8').close() _.path = path _.data = data _.fp = open(path, 'a', encoding='utf8') @atexit.register def onExit(): _.fp.flush() _.fp.close() def add(_, entry): _.data[entry] = True _.fp.write(entry + '\n') _.fp.flush() def __getitem__(_, key): return _.data[key] def get(_, key): return _.data.get(key) def __str__(_): return str({k: _.__getattribute__(k) for k in _.__slots__}) def __repr__(_): return str({k: _.__getattribute__(k) for k in _.__slots__})