Files
create/src/App/StringHasher.pyi

63 lines
1.7 KiB
Python

from Base.Metadata import export, constmethod
from Base.BaseClass import BaseClass
from typing import Any, Final, overload, Dict
@export(
Constructor=True,
Reference=True,
)
class StringHasher(BaseClass):
"""
This is the StringHasher class
Author: Zheng, Lei (realthunder.dev@gmail.com)
Licence: LGPL
"""
@overload
def __init__(self, *args: Any, **kwargs: Any) -> None:
...
def getID(self, arg: Any, base64: bool = False) -> Any:
"""
getID(txt|id, base64=False) -> StringID
If the input is text, return a StringID object that is unique within this hasher. This
StringID object is reference counted. The hasher may only save hash ID's that are used.
If the input is an integer, then the hasher will try to find the StringID object stored
with the same integer value.
base64: indicate if the input 'txt' is base64 encoded binary data
"""
...
@overload
def getID(self, txt: str, base64: bool = False) -> Any: ...
@overload
def getID(self, id: int, base64: bool = False) -> Any: ...
@constmethod
def isSame(self, other: "StringHasher") -> bool:
"""
Check if two hasher are the same
"""
...
Count: Final[int] = 0
"""Return count of used hashes"""
Size: Final[int] = 0
"""Return the size of the hashes"""
SaveAll: bool = False
"""Whether to save all string hashes regardless of its use count"""
Threshold: int = 0
"""Data length exceed this threshold will be hashed before storing"""
Table: Final[Dict[int, str]] = {}
"""Return the entire string table as Int->String dictionary"""