This is an automated email from the ASF dual-hosted git repository.

tvalentyn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git


The following commit(s) were added to refs/heads/master by this push:
     new 057eb06514a Add a container for Python 3.12. (#31216)
057eb06514a is described below

commit 057eb06514ad47383ffe33ee1faf0469833dc37d
Author: tvalentyn <tvalen...@users.noreply.github.com>
AuthorDate: Thu May 9 09:32:10 2024 -0700

    Add a container for Python 3.12. (#31216)
    
    * Add a container for py312.
    
    * fixup: bump the upper version.
---
 sdks/python/container/build.gradle                 |  23 ++--
 .../container/py312/base_image_requirements.txt    | 152 +++++++++++++++++++++
 sdks/python/container/py312/build.gradle           |  28 ++++
 settings.gradle.kts                                |   1 +
 4 files changed, 191 insertions(+), 13 deletions(-)

diff --git a/sdks/python/container/build.gradle 
b/sdks/python/container/build.gradle
index 161d343b303..f07b6f743fa 100644
--- a/sdks/python/container/build.gradle
+++ b/sdks/python/container/build.gradle
@@ -21,7 +21,7 @@ applyGoNature()
 
 description = "Apache Beam :: SDKs :: Python :: Container"
 int min_python_version=8
-int max_python_version=11
+int max_python_version=12
 
 configurations {
   sdkSourceTarball
@@ -38,10 +38,9 @@ goBuild {
 }
 
 tasks.register("buildAll") {
-  dependsOn ':sdks:python:container:py38:docker'
-  dependsOn ':sdks:python:container:py39:docker'
-  dependsOn ':sdks:python:container:py310:docker'
-  dependsOn ':sdks:python:container:py311:docker'
+  for(int ver=min_python_version; ver<=max_python_version; ++ver) {
+      dependsOn ':sdks:python:container:py3' + ver + ':docker'
+  }
 }
 
 for(int i=min_python_version; i<=max_python_version; ++i) {
@@ -68,17 +67,15 @@ for(int i=min_python_version; i<=max_python_version; ++i) {
 }
 
 tasks.register("pushAll") {
-  dependsOn ':sdks:python:container:push38'
-  dependsOn ':sdks:python:container:push39'
-  dependsOn ':sdks:python:container:push310'
-  dependsOn ':sdks:python:container:push311'
+  for(int ver=min_python_version; ver<=max_python_version; ++ver) {
+      dependsOn ':sdks:python:container:push3' + ver
+  }
 }
 
 tasks.register("generatePythonRequirementsAll") {
-  dependsOn ':sdks:python:container:py38:generatePythonRequirements'
-  dependsOn ':sdks:python:container:py39:generatePythonRequirements'
-  dependsOn ':sdks:python:container:py310:generatePythonRequirements'
-  dependsOn ':sdks:python:container:py311:generatePythonRequirements'
+  for(int ver=min_python_version; ver<=max_python_version; ++ver) {
+      dependsOn ':sdks:python:container:py3' + ver + 
':generatePythonRequirements'
+  }
 }
 
 artifacts {
diff --git a/sdks/python/container/py312/base_image_requirements.txt 
b/sdks/python/container/py312/base_image_requirements.txt
new file mode 100644
index 00000000000..4a6147b573b
--- /dev/null
+++ b/sdks/python/container/py312/base_image_requirements.txt
@@ -0,0 +1,152 @@
+#    Licensed to the Apache Software Foundation (ASF) under one or more
+#    contributor license agreements.  See the NOTICE file distributed with
+#    this work for additional information regarding copyright ownership.
+#    The ASF licenses this file to You under the Apache License, Version 2.0
+#    (the "License"); you may not use this file except in compliance with
+#    the License.  You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS,
+#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#    See the License for the specific language governing permissions and
+#    limitations under the License.
+
+# Autogenerated requirements file for Apache Beam py312 container image.
+# Run ./gradlew :sdks:python:container:generatePythonRequirementsAll to update.
+# Do not edit manually, adjust ../base_image_requirements_manual.txt or
+# Apache Beam's setup.py instead, and regenerate the list.
+# You will need Python interpreters for all versions supported by Beam, see:
+# https://s.apache.org/beam-python-dev-wiki
+# Reach out to a committer if you need help.
+
+annotated-types==0.6.0
+attrs==23.2.0
+beautifulsoup4==4.12.3
+bs4==0.0.2
+build==1.2.1
+cachetools==5.3.3
+certifi==2024.2.2
+cffi==1.16.0
+charset-normalizer==3.3.2
+click==8.1.7
+cloudpickle==2.2.1
+cramjam==2.8.3
+crcmod==1.7
+cryptography==42.0.7
+Cython==0.29.37
+deprecation==2.1.0
+dill==0.3.1.1
+dnspython==2.6.1
+docker==7.0.0
+docopt==0.6.2
+docstring_parser==0.16
+execnet==2.1.1
+fastavro==1.9.4
+fasteners==0.19
+freezegun==1.5.0
+future==1.0.0
+google-api-core==2.19.0
+google-api-python-client==2.128.0
+google-apitools==0.5.31
+google-auth==2.29.0
+google-auth-httplib2==0.2.0
+google-cloud-aiplatform==1.50.0
+google-cloud-bigquery==3.22.0
+google-cloud-bigquery-storage==2.25.0
+google-cloud-bigtable==2.23.1
+google-cloud-core==2.4.1
+google-cloud-datastore==2.19.0
+google-cloud-dlp==3.16.0
+google-cloud-language==2.13.3
+google-cloud-profiler==4.1.0
+google-cloud-pubsub==2.21.1
+google-cloud-pubsublite==1.10.0
+google-cloud-recommendations-ai==0.10.10
+google-cloud-resource-manager==1.12.3
+google-cloud-spanner==3.46.0
+google-cloud-storage==2.16.0
+google-cloud-videointelligence==2.13.3
+google-cloud-vision==3.7.2
+google-crc32c==1.5.0
+google-resumable-media==2.7.0
+googleapis-common-protos==1.63.0
+greenlet==3.0.3
+grpc-google-iam-v1==0.13.0
+grpc-interceptor==0.15.4
+grpcio==1.63.0
+grpcio-status==1.62.2
+guppy3==3.1.4.post1
+hdfs==2.7.3
+httplib2==0.22.0
+hypothesis==6.100.5
+idna==3.7
+iniconfig==2.0.0
+joblib==1.4.2
+jsonpickle==3.0.4
+jsonschema==4.22.0
+jsonschema-specifications==2023.12.1
+mmh3==4.1.0
+mock==5.1.0
+nltk==3.8.1
+nose==1.3.7
+numpy==1.26.4
+oauth2client==4.1.3
+objsize==0.7.0
+orjson==3.10.3
+overrides==7.7.0
+packaging==24.0
+pandas==2.1.4
+parameterized==0.9.0
+pluggy==1.5.0
+proto-plus==1.23.0
+protobuf==4.25.3
+psycopg2-binary==2.9.9
+pyarrow==14.0.2
+pyarrow-hotfix==0.6
+pyasn1==0.6.0
+pyasn1_modules==0.4.0
+pycparser==2.22
+pydantic==2.7.1
+pydantic_core==2.18.2
+pydot==1.4.2
+PyHamcrest==2.1.0
+pymongo==4.7.1
+PyMySQL==1.1.0
+pyparsing==3.1.2
+pyproject_hooks==1.1.0
+pytest==7.4.4
+pytest-timeout==2.3.1
+pytest-xdist==3.6.1
+python-dateutil==2.9.0.post0
+python-snappy==0.7.1
+pytz==2024.1
+PyYAML==6.0.1
+redis==5.0.4
+referencing==0.35.1
+regex==2024.4.28
+requests==2.31.0
+requests-mock==1.12.1
+rpds-py==0.18.1
+rsa==4.9
+scikit-learn==1.4.2
+scipy==1.13.0
+setuptools==69.5.1
+shapely==2.0.4
+six==1.16.0
+sortedcontainers==2.4.0
+soupsieve==2.5
+SQLAlchemy==2.0.30
+sqlparse==0.5.0
+tenacity==8.3.0
+testcontainers==3.7.1
+threadpoolctl==3.5.0
+tqdm==4.66.4
+typing_extensions==4.11.0
+tzdata==2024.1
+uritemplate==4.1.1
+urllib3==2.2.1
+wheel==0.43.0
+wrapt==1.16.0
+zstandard==0.22.0
diff --git a/sdks/python/container/py312/build.gradle 
b/sdks/python/container/py312/build.gradle
new file mode 100644
index 00000000000..6b3147e0e05
--- /dev/null
+++ b/sdks/python/container/py312/build.gradle
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * License); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+plugins {
+  id 'base'
+  id 'org.apache.beam.module'
+}
+applyDockerNature()
+applyPythonNature()
+
+pythonVersion = '3.12'
+
+apply from: "../common.gradle"
diff --git a/settings.gradle.kts b/settings.gradle.kts
index b369f3fbb97..973d9cf8c76 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -290,6 +290,7 @@ include(":sdks:python:container:py38")
 include(":sdks:python:container:py39")
 include(":sdks:python:container:py310")
 include(":sdks:python:container:py311")
+include(":sdks:python:container:py312")
 include(":sdks:python:expansion-service-container")
 include(":sdks:python:test-suites:dataflow")
 include(":sdks:python:test-suites:dataflow:py38")

Reply via email to