diff --git a/checker.py b/checker.py index a800d49..691ce82 100644 --- a/checker.py +++ b/checker.py @@ -3,6 +3,9 @@ # pylance: disable=reportMissingImports, reportMissingModuleSource, reportGeneralTypeIssues # type: ignore +import warnings +warnings.filterwarnings("ignore", category=Warning) + import re from datetime import datetime, timedelta, timezone import subprocess @@ -14,12 +17,23 @@ import pkg_resources import requests import json from collections import deque -required_packages = ['grist-api', 'colorama'] -installed_packages = [pkg.key for pkg in pkg_resources.working_set] -for package in required_packages: - if package not in installed_packages: - subprocess.check_call([sys.executable, '-m', 'pip', 'install', package, '--break-system-packages']) +required_packages = { + 'grist-api': 'latest', + 'colorama': 'latest', + 'requests': '2.31.0', + 'urllib3': '2.0.7', + 'charset-normalizer': '3.3.2' +} + +installed_packages = {pkg.key: pkg.version for pkg in pkg_resources.working_set} + +for package, version in required_packages.items(): + if package not in installed_packages or (version != 'latest' and installed_packages[package] != version): + if version == 'latest': + subprocess.check_call([sys.executable, '-m', 'pip', 'install', package, '--break-system-packages']) + else: + subprocess.check_call([sys.executable, '-m', 'pip', 'install', f"{package}=={version}", '--break-system-packages']) from grist_api import GristDocAPI import colorama