Add utils module
This commit is contained in:
37
depaudit/utils/version.py
Normal file
37
depaudit/utils/version.py
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from packaging.version import Version
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
|
||||||
|
def parse_version(version_str: str) -> Optional[Version]:
|
||||||
|
try:
|
||||||
|
return Version(version_str)
|
||||||
|
except Exception:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def compare_versions(v1: str, v2: str) -> int:
|
||||||
|
parsed_v1 = parse_version(v1)
|
||||||
|
parsed_v2 = parse_version(v2)
|
||||||
|
if parsed_v1 is None or parsed_v2 is None:
|
||||||
|
return 0
|
||||||
|
if parsed_v1 < parsed_v2:
|
||||||
|
return -1
|
||||||
|
elif parsed_v1 > parsed_v2:
|
||||||
|
return 1
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
def is_version_outdated(current: str, latest: str) -> bool:
|
||||||
|
return compare_versions(current, latest) < 0
|
||||||
|
|
||||||
|
|
||||||
|
def extract_version_from_specifier(specifier: str) -> Optional[str]:
|
||||||
|
if not specifier:
|
||||||
|
return None
|
||||||
|
operators = ["===", "==", ">=", "<=", "~=", "!=", ">", "<", "^", "~"]
|
||||||
|
for op in operators:
|
||||||
|
if specifier.startswith(op):
|
||||||
|
return specifier[len(op):].strip()
|
||||||
|
return specifier.strip()
|
||||||
Reference in New Issue
Block a user