1
0
Fork 0

Adding upstream version 2.2.1.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Benjamin Drung 2025-02-16 12:41:59 +01:00 committed by Daniel Baumann
parent 1d36de0179
commit 757b718eff
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
129 changed files with 16110 additions and 0 deletions

64
staslib/version.py Normal file
View file

@ -0,0 +1,64 @@
# Copyright (c) 2021, Dell Inc. or its subsidiaries. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
# See the LICENSE file for details.
#
# This file is part of NVMe STorage Appliance Services (nvme-stas).
#
# Authors: Martin Belanger <Martin.Belanger@dell.com>
#
''' distutils (and hence LooseVersion) is being deprecated. None of the
suggested replacements (e.g. from pkg_resources import parse_version) quite
work with Linux kernel versions the way LooseVersion does.
It was suggested to simply lift the LooseVersion code and vendor it in,
which is what this module is about.
'''
import re
class KernelVersion:
'''Code loosely lifted from distutils's LooseVersion'''
component_re = re.compile(r'(\d+ | [a-z]+ | \.)', re.VERBOSE)
def __init__(self, string: str):
self.string = string
self.version = self.__parse(string)
def __str__(self):
return self.string
def __repr__(self):
return f'KernelVersion ("{self}")'
def __eq__(self, other):
return self.version == self.__version(other)
def __lt__(self, other):
return self.version < self.__version(other)
def __le__(self, other):
return self.version <= self.__version(other)
def __gt__(self, other):
return self.version > self.__version(other)
def __ge__(self, other):
return self.version >= self.__version(other)
@staticmethod
def __version(obj):
return obj.version if isinstance(obj, KernelVersion) else KernelVersion.__parse(obj)
@staticmethod
def __parse(string):
components = []
for item in KernelVersion.component_re.split(string):
if item and item != '.':
try:
components.append(int(item))
except ValueError:
pass
return components