Last active
December 29, 2023 10:55
-
-
Save lastforkbender/14f7f442a046b2712e5d4ea7bb1e279b to your computer and use it in GitHub Desktop.
Rev9 Self Replication Primer Module - Staqtapp
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # STAQTAPP - REV9 - SELF REPLICATION | |
| # https://github.com/lastforkbender/staqtapp | |
| # !!!Unless permitted to edit this class, do not edit by any means!!! | |
| # --------------------------------host descriptors here for module rearrangements paths or reclamation of the pre-tree determined parameters list, if the required set options to parallel paths exist and finished! | |
| import os | |
| import sys | |
| import collections | |
| import contextlib | |
| import tempfile | |
| import shutil | |
| from deque import deque | |
| import mmap | |
| class Rev9EnvVar(object): | |
| __slots__ = ['key', 'value'] | |
| def __init__(self, key, value): | |
| self.key = key | |
| self.value = value | |
| def __repr__(self): | |
| return f"Rev9EnvVar({self.key!r}, {self.value!r})" | |
| class Rev9EnvVarManager(collections.abc.MutableMapping): | |
| def __init__(self, capacity, tmp_dir=None): | |
| self.capacity = capacity | |
| self.tmp_dir = tmp_dir or tempfile.gettempdir() | |
| self.deque = deque(maxlen=capacity) | |
| self.dict = {} | |
| def __getitem__(self, key): | |
| return self.dict[key].value | |
| def __setitem__(self, key, value): | |
| env_var = Rev9EnvVar(key, value) | |
| if key in self.dict: | |
| self.deque.remove(self.dict[key]) | |
| else: | |
| if len(self.deque) == self.capacity: | |
| del self.dict[self.deque.popleft().key] | |
| self.deque.append(env_var) | |
| self.dict[key] = env_var | |
| def __delitem__(self, key): | |
| del self.dict[key] | |
| self.deque.remove(Rev9EnvVar(key, self.dict[key].value)) | |
| def __iter__(self): | |
| return iter(self.dict) | |
| def __len__(self): | |
| return len(self.dict) | |
| def save(self, filename): | |
| with open(filename, 'wb') as f: | |
| for env_var in self.deque: | |
| f.write(f"{env_var.key}={env_var.value}\n".encode('utf-8')) | |
| def load(self, filename): | |
| with open(filename, 'rb') as f: | |
| mm = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) | |
| lines = mm.readlines() | |
| for line in lines: | |
| key, value = line.decode('utf-8').strip().split('=') | |
| self[key] = value | |
| def export(self): | |
| for env_var in self.deque: | |
| os.environ[env_var.key] = env_var.value | |
| def import_os_environ(self): | |
| for key, value in os.environ.items(): | |
| self[key] = value | |
| def clear(self): | |
| self.deque.clear() | |
| self.dict.clear() | |
| def _init_deque_from_file(self, filename): | |
| self.deque.clear() | |
| with open(filename, 'rb') as f: | |
| mm = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) | |
| lines = mm.readlines() | |
| for line in lines: | |
| key, value = line.decode('utf-8').strip().split('=') | |
| env_var = Rev9EnvVar(key, value) | |
| self.deque.append(env_var) | |
| self.dict[key] = env_var |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment