diff options
author | Malfurious <m@lfurio.us> | 2025-01-04 23:57:16 -0500 |
---|---|---|
committer | Malfurious <m@lfurio.us> | 2025-01-04 23:57:16 -0500 |
commit | 23c750d2edc712c4a37e0774049a1a0f9a966009 (patch) | |
tree | e16b9f6495776dccc2c8e39d29b66d28d94b3448 /sploit/types/indextbl.py | |
parent | 640726aa11369d328c1cdfe00b4344b6a925729c (diff) | |
parent | 831fd7402cd357a79b76007471722a243ec60c8d (diff) | |
download | nsploit-23c750d2edc712c4a37e0774049a1a0f9a966009.tar.gz nsploit-23c750d2edc712c4a37e0774049a1a0f9a966009.zip |
Merge branch 'nsploit'
Rename fork to nsploit and touch up project files. We switch from
automatically obtaining version via git-describe to a static definition
in pyproject.toml, to support more install use-cases.
* nsploit:
Update pyproject file for nsploit
Don't rely on git for version information
main: Update ASCII banner for nsploit
Rename sploit package to nsploit
Diffstat (limited to 'sploit/types/indextbl.py')
-rw-r--r-- | sploit/types/indextbl.py | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/sploit/types/indextbl.py b/sploit/types/indextbl.py deleted file mode 100644 index 4f57a59..0000000 --- a/sploit/types/indextbl.py +++ /dev/null @@ -1,103 +0,0 @@ -from abc import abstractmethod -from collections.abc import Collection - -from sploit.types.index_entry import IndexEntry - -class IndexTbl(IndexEntry, Collection): - """ - Abstract Index Table - - IndexTbl is a common interface to an abstracted key-value store. The - storage mechanism as well as lookup semantics are defined by concrete - implementations. "Index" in this case is more akin to a directory index or - book index than a strictly numeric array index. - - In general, concrete tables may store values of any or multiple different - types. In particular, tables should give special accommodation for values - of type IndexEntry. These objects usually represent "rich" versions of the - nominal data types the table expects to contain. Implementation repr() - methods usually also annotate which members are IndexEntries. - - IndexTbl extends from IndexEntry, and so has a base value which represents - the "base index" of the table. The meaning of this depends on the - implementation. This inheritance also means that tables are generally - expected to be nestable. - - IndexTbls allow indices to be accessed via attribute or subscript notation. - This is probably the key characteristic feature of the class. The class - namespace is kept as clean as possible to make for the fewest collisions - between index names and other (real) class attributes. Note that there are - abstract methods, required to be overridden, which implement the index - access. These methods are only called for normal indices, not the table - base. - - Because this class overrides attribute access, normal automatic object - copying is broken. Because of this, implementations must also provide a - definition for the __copy__() method as well. - """ - - @abstractmethod - def __getindex__(self, index): - """Lookup and retrieve index value.""" - raise NotImplementedError - - @abstractmethod - def __setindex__(self, index, value): - """Lookup and set index value.""" - raise NotImplementedError - - @abstractmethod - def __delindex__(self, index): - """Lookup and delete index value.""" - raise NotImplementedError - - @abstractmethod - def __copy__(self): - """Create a copy of this IndexTbl object.""" - raise NotImplementedError - - def __contains__(self, index): - """Test the existence of the given index.""" - try: - self.__getindex__(index) - except KeyError: - return False - else: - return True - - # Attribute access methods - - def __getattr__(self, index): - """Get value via attribute.""" - return self[index] - - def __setattr__(self, index, value): - """Set value via attribute.""" - self[index] = value - - def __delattr__(self, index): - """Delete value via attribute.""" - del self[index] - - # Subscript/item access methods - - def __getitem__(self, index): - """Get value via subscript.""" - if index == "base": - return self.base - return self.__getindex__(index) - - def __setitem__(self, index, value): - """Set value via subscript.""" - if index == "base": - object.__setattr__(self, "base", value) - elif index in dir(self): - raise KeyError(f"IndexTbl: Index is reserved: {index}") - else: - self.__setindex__(index, value) - - def __delitem__(self, index): - """Delete value via subscript.""" - if index == "base": - raise KeyError("IndexTbl: May not delete index: base") - self.__delindex__(index) |