diff --git a/sdks/python/container/build.gradle b/sdks/python/container/build.gradle index 161d343b303a..f07b6f743fa4 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 000000000000..4a6147b573b8 --- /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 000000000000..6b3147e0e055 --- /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 b369f3fbb978..973d9cf8c76e 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")