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