Skip to content

Commit 1f50825

Browse files
committed
feat(data-pipelines): allow pinning of hail in requirements
1 parent 7279fc4 commit 1f50825

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

data-pipeline/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
elasticsearch~=7.17
2-
hail
2+
hail==0.2.127
33
tqdm
44
loguru
55
attrs

deploy/deployctl/subcommands/dataproc_cluster.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import subprocess
44
import sys
55
import typing
6+
import importlib.metadata
67

78
from deployctl.config import config
89

@@ -24,6 +25,22 @@ def start_cluster(name: str, cluster_args: typing.List[str]) -> None:
2425
raise RuntimeError("project configuration is required")
2526

2627
with open(os.path.join(DATA_PIPELINE_DIRECTORY, "requirements.txt")) as requirements_file:
28+
requirements_hail_version = next(
29+
(line.strip().split("==")[1] for line in requirements_file if line.strip().startswith("hail==")), None
30+
)
31+
try:
32+
local_hail_version = importlib.metadata.version("hail")
33+
except importlib.metadata.PackageNotFoundError as package_not_found:
34+
raise RuntimeError("Hail must be installed locally") from package_not_found
35+
36+
if not requirements_hail_version:
37+
raise RuntimeError("Hail must be pinned in data-pipeline/requirements.txt")
38+
if requirements_hail_version != local_hail_version:
39+
raise RuntimeError(
40+
f"Local hail version differs from version pinned in data-pipeline/requirements.txt\nRequired version {requirements_hail_version}\nLocal version {local_hail_version}"
41+
)
42+
43+
requirements_file.seek(0)
2744
requirements = [line.strip() for line in requirements_file.readlines()]
2845

2946
subprocess.check_output(

0 commit comments

Comments
 (0)