Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GH-16147 Add Python 3.12 support #16380

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
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
3 changes: 2 additions & 1 deletion docker/Jenkinsfile-build-docker
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ IMAGE_NAME_PREFIX = 'harbor.h2o.ai/opsh2oai/h2o-3'

JDK_VERSIONS = ['8', '10', '11', '12', '13', '14', '15', '16', '17']
JDK_VERSIONS_PY_R = ['8', '11', '17'] // stable, last-supported, latest
PYTHON_VERSIONS = ['3.6', '3.7', '3.8', '3.9', '3.10', '3.11']
//PYTHON_VERSIONS = ['3.6', '3.7', '3.8', '3.9', '3.10', '3.11', '3.12']
PYTHON_VERSIONS = ['3.12']
R_VERSION = ['3.3.3', '3.4.1', '3.5.3', '3.6.2', '4.0.2', '4.4.0']

def pipelineContext
Expand Down
16 changes: 16 additions & 0 deletions docker/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,22 @@ ifeq ($(shell echo $(PUSH) | tr [:upper:] [:lower:] ),true)
docker push harbor.h2o.ai/opsh2oai/h2o-3/dev-python-3.11-jdk-$*:$(VERSION)
endif

ifneq ($(CI), 1)
dev-python-3.12-jdk-%: dev-python-3.12
endif
dev-python-3.12-jdk-%:
docker build -t harbor.h2o.ai/opsh2oai/h2o-3/dev-python-3.12-jdk-$*:$(VERSION) \
$(NO_CACHE) \
-f jenkins-images/Dockerfile-jdk-others \
--build-arg FROM_VERSION=$(VERSION) \
--build-arg FROM_IMAGE=harbor.h2o.ai/opsh2oai/h2o-3/dev-python-3.12 \
--build-arg INSTALL_JAVA_VERSION=$* \
--build-arg H2O_BRANCH=$(H2O_BRANCH) \
.
ifeq ($(shell echo $(PUSH) | tr [:upper:] [:lower:] ),true)
docker push harbor.h2o.ai/opsh2oai/h2o-3/dev-python-3.12-jdk-$*:$(VERSION)
endif

ifneq ($(CI), 1)
dev-mojocompat: dev-python-3.7

Expand Down
2 changes: 1 addition & 1 deletion h2o-dist/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -607,7 +607,7 @@ <h2>Get started with H<sub>2</sub>O in 3 easy steps</h2>
<div id="quickstart-py" style="display:none">
<h2>Use H<sub>2</sub>O directly from Python</h2>

<p>1. Prerequisite: Python 3.6.x to 3.11.x</p>
<p>1. Prerequisite: Python 3.6.x to 3.12.x</p>
<p>2. Install dependencies (prepending with `sudo` if needed):</p>
<button class="btn copy_button" id="btnCopy8" data-clipboard-target='#to_copy8'></button>
<p class="terminal" id="to_copy8">
Expand Down
2 changes: 1 addition & 1 deletion h2o-docs/src/product/welcome.rst
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ At a minimum, we recommend the following for compatibility with H2O:
- **Languages**: R and Python are not required to use H2O unless you want to use H2O in those environments, but Java is always required (see `below <http://docs.h2o.ai/h2o/latest-stable/h2o-docs/welcome.html#java-requirements>`__).

- R version 3 or later
- Python 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x
- Python 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x

- **Browser**: An internet browser is required to use H2O's web UI, Flow. Supported versions include the latest version of Chrome, Firefox, Safari, or Internet Explorer.

Expand Down
3 changes: 2 additions & 1 deletion h2o-py/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11"
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12"
],

keywords='machine learning, data mining, statistical analysis, modeling, big data, distributed, parallel',
Expand Down
2 changes: 1 addition & 1 deletion scripts/jenkins/groovy/buildConfig.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ class BuildConfig {
public static final String RELEASE_BRANCH_PREFIX = 'rel-'

public static final String DEFAULT_PYTHON_VERSION = '3.6'
public static final List PYTHON_VERSIONS = ['3.6', '3.7', '3.8', '3.9', '3.10', '3.11']
public static final List PYTHON_VERSIONS = ['3.6', '3.7', '3.8', '3.9', '3.10', '3.11', '3.12']
public static final List R_VERSIONS = ['3.3.3', '3.4.1']

public static final String MAKEFILE_PATH = 'scripts/jenkins/Makefile.jenkins'
Expand Down
18 changes: 17 additions & 1 deletion scripts/jenkins/groovy/defineTestStages.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ def call(final pipelineContext) {
component: pipelineContext.getBuildConfig().COMPONENT_PY
],
[
stageName: 'Py3.11 Smoke', target: 'test-py-smoke', pythonVersion: '3.11', timeoutValue: 8,
stageName: 'Py3.12 Smoke', target: 'test-py-smoke', pythonVersion: '3.12', timeoutValue: 8,
component: pipelineContext.getBuildConfig().COMPONENT_PY
],
[
Expand Down Expand Up @@ -558,6 +558,22 @@ def call(final pipelineContext) {
stageName: 'Py3.11 Medium-large', target: 'test-pyunit-medium-large', pythonVersion: '3.11',
timeoutValue: 600, component: pipelineContext.getBuildConfig().COMPONENT_PY
],
[
stageName: 'Py3.12 Single Node', target: 'test-pyunit-single-node', pythonVersion: '3.12',
timeoutValue: 40, component: pipelineContext.getBuildConfig().COMPONENT_PY
],
[
stageName: 'Py3.12 Fault Tolerance', target: 'test-pyunit-fault-tolerance', pythonVersion: '3.12',
timeoutValue: 30, component: pipelineContext.getBuildConfig().COMPONENT_PY
],
[
stageName: 'Py3.12 AutoML', target: 'test-pyunit-automl', pythonVersion: '3.12',
timeoutValue: 100, component: pipelineContext.getBuildConfig().COMPONENT_PY
],
[
stageName: 'Py3.12 Medium-large', target: 'test-pyunit-medium-large', pythonVersion: '3.12',
timeoutValue: 600, component: pipelineContext.getBuildConfig().COMPONENT_PY
],
[ // These run with reduced number of file descriptors for early detection of FD leaks
stageName: 'XGBoost Stress tests', target: 'test-pyunit-xgboost-stress', pythonVersion: '3.6', timeoutValue: 40,
component: pipelineContext.getBuildConfig().COMPONENT_PY, customDockerArgs: [ '--ulimit nofile=150:150' ]
Expand Down