Merge commit '7fdd2411bb305df27c4688999d5ec4ef408f1891' as 'utils_v2'

This commit is contained in:
2025-11-14 17:00:28 +05:30
227 changed files with 151811 additions and 0 deletions
+129
View File
@@ -0,0 +1,129 @@
"""
AUTHOR:
Khushal P Soonderji
DATE:
Sunday 1st Sept. 2024.
OBJECTIVE:
To provide a way to convert any input data to serialized bytes, and back.
REFERENCES:
N/A
DOWNLOADS:
N/A
"""
# *****************************************************************************************************************
# ***** ****
# *** IMPORT ***
# ***** ****
# *****************************************************************************************************************
# To make sibling directories accessible for imports:
import sys
sys.path.append(".")
sys.path.append("..")
# To work with files:
from utils_v2.string import json
# *****************************************************************************************************************
# ***** ****
# *** MACROS / ONE-TIME INIT ***
# ***** ****
# *****************************************************************************************************************
# --- Nothing Yet
# *****************************************************************************************************************
# ***** ****
# *** VARIABLES ***
# ***** ****
# *****************************************************************************************************************
# --- Nothing Yet
# *****************************************************************************************************************
# ***** ****
# *** FUNCTIONS ***
# ***** ****
# *****************************************************************************************************************
# --- Nothing Yet
# *****************************************************************************************************************
# ***** ****
# *** CLASSES ***
# ***** ****
# *****************************************************************************************************************
class JSONSerializer:
def __init__(self):
"""
Use this serializer when dealing with JSON-compatible data like direct JSON-strings, python dicts, and
python-lists. Beware that non-compatible data will cause either direct exceptions or unexpected behaviour.
"""
pass
@staticmethod
def serialize(data, encoding = "utf-8"):
"""
Serializes the data that is given to it.
The input has to be JSON-compatible.
:param data: The data to serialize.
:param encoding: The encoding to use.
:return: The bytes representing the data.
"""
# If the data is not already a JSON string, parse it. Then return it as bytes:
data = data if isinstance(data, str) else json.to_string(data, no_space = True)
return data.encode(encoding)
@staticmethod
def deserialize(data, encoding = "utf-8"):
"""
Deserializes the bytes that are given to it.
The input has to be JSON-compatible.
:param data: The bytes to deserialize.
:param encoding: The encoding to use.
:return: The data from the bytes that described it.
"""
data = data.decode(encoding)
return json.from_string(data)
# *****************************************************************************************************************
# ***** ****
# *** MAIN PROGRAM ***
# ***** ****
# *****************************************************************************************************************
if __name__ == "__main__":
pass