From 12e806d75469dc22c5722492b29e3e940d2192d1 Mon Sep 17 00:00:00 2001 From: k-boikov <64261260+k-boikov@users.noreply.github.com> Date: Sat, 13 May 2023 02:23:54 +0300 Subject: [PATCH] Parse package versions so upgrades can be forced (#4149) * parse package versions so upgrades can be forced * better version from @collijk --- scripts/check_requirements.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/scripts/check_requirements.py b/scripts/check_requirements.py index 3323697b59..ceccf930a0 100644 --- a/scripts/check_requirements.py +++ b/scripts/check_requirements.py @@ -11,15 +11,19 @@ def main(): line.strip().split("#")[0].strip() for line in f.readlines() ] - installed_packages = [package.key for package in pkg_resources.working_set] + installed_packages = {pkg.key: pkg.version for pkg in pkg_resources.working_set} missing_packages = [] - for package in required_packages: - if not package: # Skip empty lines + for required_package in required_packages: + if not required_package: # Skip empty lines continue - package_name = re.split("[<>=@ ]+", package.strip())[0] - if package_name.lower() not in installed_packages: - missing_packages.append(package_name) + pkg = pkg_resources.Requirement.parse(required_package) + if ( + pkg.key not in installed_packages + or pkg_resources.parse_version(installed_packages[pkg.key]) + not in pkg.specifier + ): + missing_packages.append(str(pkg)) if missing_packages: print("Missing packages:")