computer_vision/context.py
2026-03-01 23:53:30 +01:00

54 lines
1.4 KiB
Python

from collections.abc import MutableMapping
class PP_Context(MutableMapping):
def __init__(self, *args, **context):
self.store = dict()
self.update(dict(*args, **context))
def get(self, thing):
return self.store.get(thing)
def get_or_set(self, thing, this):
if self._has(thing):
return self.get(thing)
self.set(thing, this)
return self.get(thing)
def get_or_false(self, thing):
if self._has(thing):
ret = self.get(thing)
if not ret is None:
return ret
return False
def set(self, thing, value):
self.__setitem__(thing, value)
def _has(self, thing):
if (isinstance(thing, str) or isinstance(thing, int)) and thing in self.store:
return True
return False
def __getitem__(self, key):
return self.store[self.__keytransform__(key)]
def __setitem__(self, key, value):
self.store[self.__keytransform__(key)] = value
setattr(self, self.__keytransform__(key), value)
def __delitem__(self, key):
del self.store[self.__keytransform__(key)]
delattr(self, self.__keytransform__(key))
def __iter__(self):
return iter(self.store)
def __len__(self):
return len(self.store)
def __keytransform__(self, key):
# :D
return key.lower()