| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- from packaging import version
- def in_range(version_str: str, range_str: str) -> bool:
- conditions = [cond.strip() for cond in range_str.split(",")]
- ver = version.parse(version_str)
- for cond in conditions:
- if cond.startswith(">="):
- if ver < version.parse(cond[2:]):
- return False
- elif cond.startswith("<="):
- if ver > version.parse(cond[2:]):
- return False
- elif cond.startswith(">"):
- if ver <= version.parse(cond[1:]):
- return False
- elif cond.startswith("<"):
- if ver >= version.parse(cond[1:]):
- return False
- else: # exact match
- if ver != version.parse(cond):
- return False
- return True
- def is_valid_version_str(version_str: str) -> bool:
- """
- Check if the version string is valid and can be parsed.
- Returns True if valid, False otherwise.
- """
- try:
- version.parse(version_str)
- return True
- except Exception:
- return False
- def is_worker_version_compatible(
- worker_version: str,
- server_version: str,
- ) -> bool:
- """
- Check if worker and server versions are compatible.
- Args:
- worker_version: The version string of the worker.
- server_version: The version string of the server.
- Returns:
- bool: is_compatible
- """
- # Skip development version
- if worker_version == "0.0.0" or server_version == "0.0.0":
- return True
- try:
- worker_ver = version.parse(worker_version)
- server_ver = version.parse(server_version)
- except Exception:
- return False
- return worker_ver == server_ver
|