Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 26 additions & 11 deletions check_requirements.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,35 @@

import pkg_resources
import sys
from importlib.metadata import version, PackageNotFoundError
from packaging.requirements import Requirement
from packaging.version import Version

def check_requirements(requirements_file='requirements.txt'):
with open(requirements_file, 'r') as file:
requirements = file.readlines()

for requirement in requirements:
requirement = requirement.strip()
try:
pkg_resources.require(requirement)
except pkg_resources.VersionConflict as e:
print(f"WARNING: {str(e)}")
except pkg_resources.DistributionNotFound as e:
print(f"ERROR: {str(e)}")
sys.exit(1)
for requirement_line in requirements:
requirement_line = requirement_line.strip()
if not requirement_line or requirement_line.startswith('#'):
continue

try:
req = Requirement(requirement_line)
try:
# Get installed version
installed_version = version(req.name)
installed = Version(installed_version)

# Check if versions matches
if req.specifier and not req.specifier.contains(installed):
print(f"WARNING: Version conflict for {req.name}. "
f"Required: {req.specifier}, installed: {installed_version}")

except PackageNotFoundError:
print(f"ERROR: Package {req.name} not found")
sys.exit(1)

except Exception as e:
print(f"WARNING: Could not parse requirement '{requirement_line}': {str(e)}")

if __name__ == "__main__":
check_requirements()
12 changes: 9 additions & 3 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
grpcio==1.65.4
grpcio-tools==1.65.4
scipy==1.14.1
pyrusgeom==0.1.2
Nuitka==2.5
psutil==5.8.0
numpy==2.2.4
ordered-set==4.1.0
packaging==24.2
protobuf==5.29.4
psutil==5.8.0
pyrusgeom==0.1.2
scipy==1.14.1
setuptools==78.1.0
zstandard==0.23.0