|
import re |
|
|
|
from importlib_metadata import PackageNotFoundError, distribution |
|
from mmengine.utils import digit_version |
|
|
|
|
|
def satisfy_requirement(dep): |
|
pat = '(' + '|'.join(['>=', '==', '>']) + ')' |
|
parts = re.split(pat, dep, maxsplit=1) |
|
parts = [p.strip() for p in parts] |
|
package = parts[0] |
|
if len(parts) > 1: |
|
op, version = parts[1:] |
|
op = { |
|
'>=': '__ge__', |
|
'==': '__eq__', |
|
'>': '__gt__', |
|
'<': '__lt__', |
|
'<=': '__le__' |
|
}[op] |
|
else: |
|
op, version = None, None |
|
|
|
try: |
|
dist = distribution(package) |
|
if op is None or getattr(digit_version(dist.version), op)( |
|
digit_version(version)): |
|
return True |
|
except PackageNotFoundError: |
|
pass |
|
|
|
return False |
|
|