import ctypes
from brainaccess.core import _dll
[docs]
class Version(ctypes.Structure):
    """Object describing version numbers
    Attributes
    ----------
    major
        API-breaking changes
    minor
        Feature updates
    patch
        Bugfixes
    """
    _fields_ = [
        ("major", ctypes.c_uint8),
        ("minor", ctypes.c_uint8),
        ("patch", ctypes.c_uint8),
    ]
    def __init__(self, major, minor, patch):
        self.major = major
        self.minor = minor
        self.patch = patch
    def __repr__(self):
        return "{0}.{1}.{2}".format(self.major, self.minor, self.patch) 
_dll.ba_is_version_compatible.argtypes = [
    ctypes.POINTER(Version),
    ctypes.POINTER(Version),
]
_dll.ba_is_version_compatible.restype = ctypes.c_bool
[docs]
def is_version_compatible(expected: str, actual: str) -> bool:
    """Check if versions are compatible
    Parameters
    -----------
    expected: str
    actual: str
    Returns
    --------
    bool
        True if compatible
    """
    return _dll.ba_is_version_compatible(
        ctypes.pointer(expected), ctypes.pointer(actual)
    )