Skip to content

[services, hailtop] Restore "shift supported python versions from 3.10-13 to 3.12-14" - #15663

Merged
hail-ci-robot merged 3 commits into
mainfrom
revert-15660-revert-15603-cjl_python_version_bump
Aug 11, 2026
Merged

hail-ci-robot merged 3 commits into
mainfrom
revert-15660-revert-15603-cjl_python_version_bump

Conversation

@cjllanwarne

Copy link
Copy Markdown
Collaborator

Reverts #15660; restores the changes in #15603. Should be ready to merge again after the dataproc update (#15662)


Change Description

Updates the default python version to 3.12 and shifts the list of supported versions to 3.12, 3.13, 3.14 to realign with the numpy's supported versions.

Update: 3.11 will NOT continue to be supported. EMR has been shown to work ok with 3.12 and numpy support has already expired on 3.11.

Security Assessment

Delete all except the correct answer:

  • This change potentially impacts the Hail Batch instance as deployed by Broad Institute in GCP

Impact Rating

  • This change has a low security impact

Impact Description

Python version updates in services and client libraries.

Appsec Review

  • Required: The impact has been assessed and approved by appsec

@cjllanwarne
cjllanwarne requested a review from ehigham August 10, 2026 19:03
@cjllanwarne
cjllanwarne requested a review from a team as a code owner August 10, 2026 19:03
Comment thread hail/python/hail/__init__.py Outdated
Comment on lines +5 to +6
if version_info < (3, 11):
raise EnvironmentError(f'Hail requires Python 3.11 or later, found {version_info.major}.{version_info.minor}')

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Version check inconsistency: The runtime check allows Python 3.11+, but setup.py and setup-hailtop.py require Python 3.12+, and docker.py also enforces 3.12+. This creates an inconsistent state where Python 3.11 users could install Hail (passing the runtime check) but fail at build/docker image creation time. Should be:

if version_info < (3, 12):
    raise EnvironmentError(f'Hail requires Python 3.12 or later, found {version_info.major}.{version_info.minor}')

This aligns with the PR description stating "3.11 will NOT continue to be supported" and matches the python_requires=">=3.12" in both setup files.

Suggested change
if version_info < (3, 11):
raise EnvironmentError(f'Hail requires Python 3.11 or later, found {version_info.major}.{version_info.minor}')
if version_info < (3, 12):
raise EnvironmentError(f'Hail requires Python 3.12 or later, found {version_info.major}.{version_info.minor}')

Spotted by Graphite

Fix in Graphite


Is this helpful? React 👍 or 👎 to let us know.

@cjllanwarne cjllanwarne added the run-dataproc-tests Force (usually deploy only) dataproc tests to run as part of CI testing label Aug 10, 2026

@ehigham ehigham left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Splendid, excellent, first-rate.

@cjllanwarne
cjllanwarne force-pushed the revert-15660-revert-15603-cjl_python_version_bump branch from cfd157b to a8366fd Compare August 11, 2026 15:53

@sarahgibs sarahgibs left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great, thanks!

@hail-ci-robot
hail-ci-robot merged commit 1cef2ed into main Aug 11, 2026
15 checks passed
@hail-ci-robot
hail-ci-robot deleted the revert-15660-revert-15603-cjl_python_version_bump branch August 11, 2026 21:16
kush-chandra pushed a commit to kush-chandra/hail that referenced this pull request Aug 19, 2026
…0-13 to 3.12-14" (hail-is#15663)

Reverts hail-is#15660; restores the changes in hail-is#15603. Should be
ready to merge again after the dataproc update (hail-is#15662)

---

## Change Description

Updates the default python version to 3.12 and shifts the list of
supported versions to 3.12, 3.13, 3.14 to realign with the numpy's
supported versions.

Update: 3.11 will NOT continue to be supported. EMR has been shown to
work ok with 3.12 and numpy support has already expired on 3.11.

## Security Assessment

Delete all except the correct answer:
- This change potentially impacts the Hail Batch instance as deployed by
Broad Institute in GCP

### Impact Rating

- This change has a low security impact

### Impact Description

Python version updates in services and client libraries.

### Appsec Review

- [ ] Required: The impact has been assessed and approved by appsec
kush-chandra pushed a commit to kush-chandra/hail that referenced this pull request Aug 19, 2026
…0-13 to 3.12-14" (hail-is#15663)

Reverts hail-is#15660; restores the changes in hail-is#15603. Should be
ready to merge again after the dataproc update (hail-is#15662)

---

## Change Description

Updates the default python version to 3.12 and shifts the list of
supported versions to 3.12, 3.13, 3.14 to realign with the numpy's
supported versions.

Update: 3.11 will NOT continue to be supported. EMR has been shown to
work ok with 3.12 and numpy support has already expired on 3.11.

## Security Assessment

Delete all except the correct answer:
- This change potentially impacts the Hail Batch instance as deployed by
Broad Institute in GCP

### Impact Rating

- This change has a low security impact

### Impact Description

Python version updates in services and client libraries.

### Appsec Review

- [ ] Required: The impact has been assessed and approved by appsec
kush-chandra pushed a commit to kush-chandra/hail that referenced this pull request Aug 19, 2026
…0-13 to 3.12-14" (hail-is#15663)

Reverts hail-is#15660; restores the changes in hail-is#15603. Should be
ready to merge again after the dataproc update (hail-is#15662)

---

## Change Description

Updates the default python version to 3.12 and shifts the list of
supported versions to 3.12, 3.13, 3.14 to realign with the numpy's
supported versions.

Update: 3.11 will NOT continue to be supported. EMR has been shown to
work ok with 3.12 and numpy support has already expired on 3.11.

## Security Assessment

Delete all except the correct answer:
- This change potentially impacts the Hail Batch instance as deployed by
Broad Institute in GCP

### Impact Rating

- This change has a low security impact

### Impact Description

Python version updates in services and client libraries.

### Appsec Review

- [ ] Required: The impact has been assessed and approved by appsec
kush-chandra pushed a commit to kush-chandra/hail that referenced this pull request Aug 19, 2026
…0-13 to 3.12-14" (hail-is#15663)

Reverts hail-is#15660; restores the changes in hail-is#15603. Should be
ready to merge again after the dataproc update (hail-is#15662)

---

## Change Description

Updates the default python version to 3.12 and shifts the list of
supported versions to 3.12, 3.13, 3.14 to realign with the numpy's
supported versions.

Update: 3.11 will NOT continue to be supported. EMR has been shown to
work ok with 3.12 and numpy support has already expired on 3.11.

## Security Assessment

Delete all except the correct answer:
- This change potentially impacts the Hail Batch instance as deployed by
Broad Institute in GCP

### Impact Rating

- This change has a low security impact

### Impact Description

Python version updates in services and client libraries.

### Appsec Review

- [ ] Required: The impact has been assessed and approved by appsec
klaricch added a commit to broadinstitute/gnomad_qc that referenced this pull request Oct 28, 2026
Collects the inputs for the gnomad-qc-deps images the v5 info HT runs
(generate_variant_qc_annotations.py --generate-ac-info-ht) use, beside the
script they serve, named for what they build rather than for the directory
they sit in:

- info_ht.Dockerfile + info_ht_cloudbuild.yaml, carried over from
  kl/split_info_ht_workflow so they are not stranded on a feature branch.
- info_ht_hail_dev.Dockerfile, recovered: this built the currently-running
  :20260710-hail882835b-py312 image but only ever existed in /tmp, which
  macOS has since wiped. Its instructions are byte-identical to the
  published image's build history.
- info_ht_hail_dev_venv.pins, the pins for that image's /opt/venv-312,
  verified byte-identical to the copy baked into the image layer. Named
  .pins, not requirements*.txt, so GitHub's dependency graph does not read
  image-exact pins as a manifest for the repo.

These reproduce the overlay, not the whole stack. :20260710 was built with
hail==0.2.137, so info_ht.Dockerfile as committed produces the equivalent of
:20260826 rather than that tag; the header records this. It makes no
difference to what runs, since the base's 3.11 venv is shadowed on PATH.

The overlay exists because the dev Hail build requires Python >= 3.12
(hail-is/hail#15663 shifted supported versions from 3.10-3.13 to 3.12-3.14)
and the base image's /opt/venv is 3.11, so it adds a 3.12 venv at
/opt/venv-312 and puts it first on PATH. The build is main at 882835b, 84
commits past the 0.2.139 release; 882835b itself is only a CI commit, so the
header points at the range rather than claiming a specific fix.

The wheel is the one input the repo cannot regenerate, and the Hail bucket
that published it expires around 2026-11-14, so it is mirrored to
gs://gnomad-resources/hail-dev-wheels/0.2.139-882835b33794/.

Both Dockerfiles now assert the Hail version and interpreter at build time,
so a base/pin mismatch fails the build instead of a run. info_ht_cloudbuild
.yaml has no default _TAG, so a forgotten --substitutions fails rather than
pushing over a shared tag.

Keeping cloudbuild config out of the repo root also avoids a collision: the
v4/sample_qc README documents `gcloud builds submit --config cloudbuild.yaml`
with a TAG_NAME substitution, which would otherwise pick up this file.

Assisted-by: ClaudeCode:claude-opus-5
klaricch added a commit to broadinstitute/gnomad_qc that referenced this pull request Oct 29, 2026
Collects the inputs for the gnomad-qc-deps images the v5 info HT runs
(generate_variant_qc_annotations.py --generate-ac-info-ht) use, beside the
script they serve, named for what they build rather than for the directory
they sit in:

- info_ht.Dockerfile + info_ht_cloudbuild.yaml, carried over from
  kl/split_info_ht_workflow so they are not stranded on a feature branch.
- info_ht_hail_dev.Dockerfile, recovered: this built the currently-running
  :20260710-hail882835b-py312 image but only ever existed in /tmp, which
  macOS has since wiped. Its instructions are byte-identical to the
  published image's build history.
- info_ht_hail_dev_venv.pins, the pins for that image's /opt/venv-312,
  verified byte-identical to the copy baked into the image layer. Named
  .pins, not requirements*.txt, so GitHub's dependency graph does not read
  image-exact pins as a manifest for the repo.

These reproduce the overlay, not the whole stack. :20260710 was built with
hail==0.2.137, so info_ht.Dockerfile as committed produces the equivalent of
:20260826 rather than that tag; the header records this. It makes no
difference to what runs, since the base's 3.11 venv is shadowed on PATH.

The overlay exists because the dev Hail build requires Python >= 3.12
(hail-is/hail#15663 shifted supported versions from 3.10-3.13 to 3.12-3.14)
and the base image's /opt/venv is 3.11, so it adds a 3.12 venv at
/opt/venv-312 and puts it first on PATH. The build is main at 882835b, 84
commits past the 0.2.139 release; 882835b itself is only a CI commit, so the
header points at the range rather than claiming a specific fix.

The wheel is the one input the repo cannot regenerate, and the Hail bucket
that published it expires around 2026-11-14, so it is mirrored to
gs://gnomad-resources/hail-dev-wheels/0.2.139-882835b33794/.

Both Dockerfiles now assert the Hail version and interpreter at build time,
so a base/pin mismatch fails the build instead of a run. info_ht_cloudbuild
.yaml has no default _TAG, so a forgotten --substitutions fails rather than
pushing over a shared tag.

Keeping cloudbuild config out of the repo root also avoids a collision: the
v4/sample_qc README documents `gcloud builds submit --config cloudbuild.yaml`
with a TAG_NAME substitution, which would otherwise pick up this file.

Assisted-by: ClaudeCode:claude-opus-5
klaricch added a commit to broadinstitute/gnomad_qc that referenced this pull request Oct 29, 2026
Collects the inputs for the gnomad-qc-deps images the v5 info HT runs
(generate_variant_qc_annotations.py --generate-ac-info-ht) use, beside the
script they serve, named for what they build rather than for the directory
they sit in:

- info_ht.Dockerfile + info_ht_cloudbuild.yaml, carried over from
  kl/split_info_ht_workflow so they are not stranded on a feature branch.
- info_ht_hail_dev.Dockerfile, recovered: this built the currently-running
  :20260710-hail882835b-py312 image but only ever existed in /tmp, which
  macOS has since wiped. Its instructions are byte-identical to the
  published image's build history.
- info_ht_hail_dev_venv.pins, the pins for that image's /opt/venv-312,
  verified byte-identical to the copy baked into the image layer. Named
  .pins, not requirements*.txt, so GitHub's dependency graph does not read
  image-exact pins as a manifest for the repo.

These reproduce the overlay, not the whole stack. :20260710 was built with
hail==0.2.137, so info_ht.Dockerfile as committed produces the equivalent of
:20260826 rather than that tag; the header records this. It makes no
difference to what runs, since the base's 3.11 venv is shadowed on PATH.

The overlay exists because the dev Hail build requires Python >= 3.12
(hail-is/hail#15663 shifted supported versions from 3.10-3.13 to 3.12-3.14)
and the base image's /opt/venv is 3.11, so it adds a 3.12 venv at
/opt/venv-312 and puts it first on PATH. The build is main at 882835b, 84
commits past the 0.2.139 release; 882835b itself is only a CI commit, so the
header points at the range rather than claiming a specific fix.

The wheel is the one input the repo cannot regenerate, and the Hail bucket
that published it expires around 2026-11-14, so it is mirrored to
gs://gnomad-resources/hail-dev-wheels/0.2.139-882835b33794/.

Both Dockerfiles now assert the Hail version and interpreter at build time,
so a base/pin mismatch fails the build instead of a run. info_ht_cloudbuild
.yaml has no default _TAG, so a forgotten --substitutions fails rather than
pushing over a shared tag.

Keeping cloudbuild config out of the repo root also avoids a collision: the
v4/sample_qc README documents `gcloud builds submit --config cloudbuild.yaml`
with a TAG_NAME substitution, which would otherwise pick up this file.

Assisted-by: ClaudeCode:claude-opus-5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

run-dataproc-tests Force (usually deploy only) dataproc tests to run as part of CI testing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants