import importlib.util
from importlib import metadata
def SkipVersion(module_name, pattern):
if importlib.util.find_spec(module_name) is None:
return True
op = pattern[0]
assert op in ("=", "<", ">"), f"Invalid comparison operator: {op}"
try:
M, N = pattern[1:].split(".")
M, N = int(M), int(N)
except Exception:
raise ValueError("Cannot parse version number from pattern.")
try:
version = metadata.version(module_name)
major, minor = map(int, version.split(".")[:2])
except Exception:
raise ImportError(f"Cannot determine version of module: {module_name}")
if op == "=":
return major == M and minor == N
if op == "<":
return (major, minor) < (M, N)
return (major, minor) > (M, N)