diff --git a/python/docker/Dockerfile b/python/docker/Dockerfile index 8f2994cad0..1c97112467 100644 --- a/python/docker/Dockerfile +++ b/python/docker/Dockerfile @@ -61,7 +61,7 @@ ARG target_common="opmcommon_python" ARG target_simulators="simulators" # Default Python versions - can be overridden via build-arg or read from docker/python_versions.json # NOTE: The list is maintained in docker/python_versions.json and docker/scripts/sync_versions.sh -ARG python_versions="3.8,3.9,3.10,3.11,3.12,3.13" +ARG python_versions="3.8,3.9,3.10,3.11,3.12,3.13,3.14" # Finally copy all source files - only needed for wheel generation ADD . . RUN /bin/bash docker/scripts/generate-pypi-package.sh "$version_common" "$version_grid" "$version_simulators" "$build_jobs" "$version_tag" $libtype "$python_versions" "$target_common" "$target_simulators" diff --git a/python/docker/README.md b/python/docker/README.md index 49ede3d69f..7e21634c59 100644 --- a/python/docker/README.md +++ b/python/docker/README.md @@ -233,7 +233,7 @@ paths and image tags. ## Build Arguments - `libtype`: "static" (default) or "shared" -- `python_versions`: Comma-separated list of Python versions (default: "3.8,3.9,3.10,3.11,3.12,3.13") +- `python_versions`: Comma-separated list of Python versions (default: "3.8,3.9,3.10,3.11,3.12,3.13,3.14") - `build_jobs`: Number of parallel build jobs (default: 4) - `version_common`: Git reference for opm-common (default: "master") - `version_grid`: Git reference for opm-grid (default: "master") diff --git a/python/docker/python_versions.json b/python/docker/python_versions.json index 1ef5955d7e..e16dfeccc9 100644 --- a/python/docker/python_versions.json +++ b/python/docker/python_versions.json @@ -27,7 +27,8 @@ "3.10": "3.10.16", "3.11": "3.11.11", "3.12": "3.12.9", - "3.13": "3.13.9" + "3.13": "3.13.9", + "3.14": "3.14.0" }, "manylinux_platform": "manylinux_2_28_x86_64", "_manylinux_note": "auditwheel may optimize to an older version (e.g., manylinux_2_27) for broader compatibility" diff --git a/python/docker/scripts/generate-pypi-package.sh b/python/docker/scripts/generate-pypi-package.sh index b6af203009..7008388f59 100755 --- a/python/docker/scripts/generate-pypi-package.sh +++ b/python/docker/scripts/generate-pypi-package.sh @@ -66,6 +66,7 @@ all_python_versions[3.10]="cp310-cp310:/opt/python/cp310-cp310/bin/python" all_python_versions[3.11]="cp311-cp311:/opt/python/cp311-cp311/bin/python" all_python_versions[3.12]="cp312-cp312:/opt/python/cp312-cp312/bin/python" all_python_versions[3.13]="cp313-cp313:/opt/python/cp313-cp313/bin/python" +all_python_versions[3.14]="cp314-cp314:/opt/python/cp314-cp314/bin/python" # Build python_versions array from requested versions IFS=',' read -ra VERSIONS_ARRAY <<< "$PYTHON_VERSIONS" @@ -76,7 +77,7 @@ for version in "${VERSIONS_ARRAY[@]}"; do python_versions[$tag]=$path echo "Added Python $version (tag: $tag, path: $path)" else - echo "Warning: Python version $version not supported. Supported: 3.8, 3.9, 3.10, 3.11, 3.12, 3.13" + echo "Warning: Python version $version not supported. Supported: 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14" fi done diff --git a/python/docker/test_wheels/scripts/README.md b/python/docker/test_wheels/scripts/README.md index 4579faf0dc..0cf993b053 100644 --- a/python/docker/test_wheels/scripts/README.md +++ b/python/docker/test_wheels/scripts/README.md @@ -80,7 +80,7 @@ $ opm-wheels build-docker-image --docker-os="debian:11" - `--docker-os`, `-d` - OS for Docker image (default: ubuntu-22.04; legacy colon form accepted) - Supported: `ubuntu-22.04`, `ubuntu-24.04`, `debian-11` - `--python-versions`, `-p` - Python versions to install in container - - Supported: `3.8,3.9,3.10,3.11,3.12,3.13` + - Supported: `3.8,3.9,3.10,3.11,3.12,3.13,3.14` - Format: comma-separated list without spaces (e.g., `3.11,3.12`) - Default: installs all supported versions - `--opm-simulators-repo`, `-osr` - OPM simulators repository URL @@ -119,7 +119,7 @@ $ opm-wheels run-docker-image \ - `--docker-os`, `-d` - OS for Docker image (default: ubuntu-22.04; legacy colon form accepted) - `--wheel-dir` - Directory containing wheel files (default: python/wheelhouse) - `--python-versions`, `-p` - Python versions for testing - - Supported: `3.8,3.9,3.10,3.11,3.12,3.13` + - Supported: `3.8,3.9,3.10,3.11,3.12,3.13,3.14` - Format: comma-separated list without spaces (e.g., `3.11,3.12`) - `--host-tests-dir` - Use test directories from host instead of cloned repos - Expects: `host-tests-dir/opm-common/python` and `host-tests-dir/opm-simulators/python` diff --git a/python/docker/test_wheels/scripts/src/opm_wheels/constants.py b/python/docker/test_wheels/scripts/src/opm_wheels/constants.py index 2e5d0d47e6..af3d3ce878 100644 --- a/python/docker/test_wheels/scripts/src/opm_wheels/constants.py +++ b/python/docker/test_wheels/scripts/src/opm_wheels/constants.py @@ -36,7 +36,7 @@ def _get_python_versions_for_enum(): return list(config["supported_versions"].keys()) except Exception: # Fallback to hardcoded values - return ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + return ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] # Dynamically create PythonVersion enum using functional API _python_versions = _get_python_versions_for_enum()