Module redvox.common.versioning
This module provides functionality for determining the version of RedVox compressed packets.
Expand source code
"""
This module provides functionality for determining the version of RedVox compressed packets.
"""
from enum import Enum
LZ4_MAGIC: bytes = b'\x04"M\x18'
# noinspection PyTypeChecker
class ApiVersion(Enum):
"""
Enumerates the API versions this SDK supports.
"""
API_900: str = "API_900"
API_1000: str = "API_1000"
UNKNOWN: str = "UNKNOWN"
# pylint: disable=W0143
def __lt__(self, other: "ApiVersion") -> bool:
return self.name < other.name
@staticmethod
def from_str(version: str) -> "ApiVersion":
"""
:param version: version as string
:return: enumerated value represented by string version
"""
if version == "API_900" or version == "Api900":
return ApiVersion.API_900
elif version == "API_1000" or version == "Api1000":
return ApiVersion.API_1000
return ApiVersion.UNKNOWN
# noinspection PyTypeChecker
def check_version_buf(buf: bytes) -> ApiVersion:
"""
Attempts to check the API version of a given RedVox buffer by looking for the LZ4 frame header which is only present
in API M compressed data.
:param buf: Buffer of RedVox data.
:return: An enum that represents the API version of the file.
"""
if buf[:4] == LZ4_MAGIC:
return ApiVersion.API_1000
return ApiVersion.API_900
# noinspection PyTypeChecker
def check_version(path: str) -> ApiVersion:
"""
Attempts to check the API version of a given RedVox file by looking for the LZ4 frame header which is only present
in API M compressed data.
:param path: Path of file to check.
:return: An enum that represents the API version of the file.
"""
try:
with open(path, "rb") as fin:
return check_version_buf(fin.read(4))
except FileNotFoundError:
return ApiVersion.UNKNOWN
Functions
def check_version(path: str) ‑> ApiVersion
-
Attempts to check the API version of a given RedVox file by looking for the LZ4 frame header which is only present in API M compressed data.
:param path: Path of file to check. :return: An enum that represents the API version of the file.
Expand source code
def check_version(path: str) -> ApiVersion: """ Attempts to check the API version of a given RedVox file by looking for the LZ4 frame header which is only present in API M compressed data. :param path: Path of file to check. :return: An enum that represents the API version of the file. """ try: with open(path, "rb") as fin: return check_version_buf(fin.read(4)) except FileNotFoundError: return ApiVersion.UNKNOWN
def check_version_buf(buf: bytes) ‑> ApiVersion
-
Attempts to check the API version of a given RedVox buffer by looking for the LZ4 frame header which is only present in API M compressed data.
:param buf: Buffer of RedVox data. :return: An enum that represents the API version of the file.
Expand source code
def check_version_buf(buf: bytes) -> ApiVersion: """ Attempts to check the API version of a given RedVox buffer by looking for the LZ4 frame header which is only present in API M compressed data. :param buf: Buffer of RedVox data. :return: An enum that represents the API version of the file. """ if buf[:4] == LZ4_MAGIC: return ApiVersion.API_1000 return ApiVersion.API_900
Classes
class ApiVersion (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Enumerates the API versions this SDK supports.
Expand source code
class ApiVersion(Enum): """ Enumerates the API versions this SDK supports. """ API_900: str = "API_900" API_1000: str = "API_1000" UNKNOWN: str = "UNKNOWN" # pylint: disable=W0143 def __lt__(self, other: "ApiVersion") -> bool: return self.name < other.name @staticmethod def from_str(version: str) -> "ApiVersion": """ :param version: version as string :return: enumerated value represented by string version """ if version == "API_900" or version == "Api900": return ApiVersion.API_900 elif version == "API_1000" or version == "Api1000": return ApiVersion.API_1000 return ApiVersion.UNKNOWN
Ancestors
- enum.Enum
Class variables
var API_1000 : str
var API_900 : str
var UNKNOWN : str
Static methods
def from_str(version: str) ‑> ApiVersion
-
:param version: version as string :return: enumerated value represented by string version
Expand source code
@staticmethod def from_str(version: str) -> "ApiVersion": """ :param version: version as string :return: enumerated value represented by string version """ if version == "API_900" or version == "Api900": return ApiVersion.API_900 elif version == "API_1000" or version == "Api1000": return ApiVersion.API_1000 return ApiVersion.UNKNOWN