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

dgrove pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openwhisk-runtime-python.git


The following commit(s) were added to refs/heads/master by this push:
     new 33b6428  drop support for Python 3.7 (EOL June 2023) (#147)
33b6428 is described below

commit 33b6428d0a83a8daf9fac8aa624b666be19bbcd7
Author: David Grove <[email protected]>
AuthorDate: Mon Sep 11 09:16:55 2023 -0400

    drop support for Python 3.7 (EOL June 2023) (#147)
---
 .github/workflows/ci.yaml                          |  6 +-
 README.md                                          | 13 ++---
 core/python3Action/Dockerfile                      | 66 ----------------------
 core/python3Action/Makefile                        | 31 ----------
 core/python3Action/build.gradle                    | 31 ----------
 core/python3Action/requirements.txt                |  2 -
 settings.gradle                                    |  1 -
 tests/src/test/resources/build.sh                  |  2 +-
 .../runtime/actionContainers/Python310Tests.scala  |  2 +-
 .../runtime/actionContainers/Python311Tests.scala  |  2 +-
 .../runtime/actionContainers/Python39Tests.scala   |  2 +-
 .../{Python37Tests.scala => Python3Tests.scala}    | 11 +---
 tutorials/local_build.md                           | 18 +++---
 tutorials/local_build.sh                           | 14 ++---
 14 files changed, 26 insertions(+), 175 deletions(-)

diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index c9e22fa..65c9e06 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -88,8 +88,6 @@ jobs:
         working-directory: runtime
         run: |
           SHORT_COMMIT=$(git rev-parse --short "$GITHUB_SHA")
-          ./gradlew :core:python3Action:distDocker -PdockerRegistry=docker.io 
-PdockerImagePrefix=openwhisk -PdockerImageTag=nightly
-          ./gradlew :core:python3Action:distDocker -PdockerRegistry=docker.io 
-PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT
           ./gradlew :core:python39Action:distDocker -PdockerRegistry=docker.io 
-PdockerImagePrefix=openwhisk -PdockerImageTag=nightly
           ./gradlew :core:python39Action:distDocker -PdockerRegistry=docker.io 
-PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT
           ./gradlew :core:python310Action:distDocker 
-PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk 
-PdockerImageTag=nightly
@@ -102,9 +100,7 @@ jobs:
         run: |
           RUNTIME_VERSION=${GITHUB_REF_NAME%@*}
           IMAGE_TAG=${GITHUB_REF_NAME##*@}
-          if [ ${RUNTIME_VERSION} == "3" ]; then
-            RUNTIME="python3Action"
-          elif [ ${RUNTIME_VERSION} == "39" ]; then
+          if [ ${RUNTIME_VERSION} == "39" ]; then
             RUNTIME="python39Action"
           elif [ ${RUNTIME_VERSION} == "310" ]; then
             RUNTIME="python310Action"
diff --git a/README.md b/README.md
index 9eaff37..d25df8a 100644
--- a/README.md
+++ b/README.md
@@ -25,7 +25,6 @@ This repository contains sources files needed to build the 
Python runtimes for A
 
 The following Python runtime versions (with kind & image labels) are generated 
by the build system:
 
-- Python 3.7 (python:3.7 & openwhisk/action-python-v3.7)
 - Python 3.9 (python:3.9 & openwhisk/action-python-v3.9)
 - Python 3.10 (python:3.10 & openwhisk/action-python-v3.10)
 - Python 3.11 (python:3.11 & openwhisk/action-python-v3.11)
@@ -90,10 +89,10 @@ To build all those images, run the following command.
 
 You can optionally build a specific image by modifying the gradle command. For 
example:
 ```
-./gradlew core:python3Action:distDocker
+./gradlew core:python311Action:distDocker
 ```
 
-The build will produce Docker images such as `action-python-v3.7`
+The build will produce Docker images such as `action-python-v3.11`
 and will also tag the same image with the `whisk/` prefix. The latter
 is a convenience, which if you're testing with a local OpenWhisk
 stack, allows you to skip pushing the image to Docker Hub.
@@ -120,11 +119,11 @@ in first with the `docker` CLI.
 ### Using Your Image as an OpenWhisk Action
 
 You can now use this image as an OpenWhisk action. For example, to use
-the image `action-python-v3.7` as an action runtime, you would run
+the image `action-python-v3.11` as an action runtime, you would run
 the following command.
 
 ```
-wsk action update myAction myAction.py --docker $DOCKER_USER/action-python-v3.7
+wsk action update myAction myAction.py --docker 
$DOCKER_USER/action-python-v3.11
 ```
 
 ## Test Runtimes
@@ -178,9 +177,9 @@ The action containers can actually generate a virtualenv 
for you, provided you h
 If you have an action in the format described before (with a 
`requirements.txt`) you can build the zip file with the included files with:
 
 ```
-zip -j -r myaction | docker run -i action-python-v3.7 -compile main > 
myaction.zip
+zip -j -r myaction | docker run -i action-python-v3.11 -compile main > 
myaction.zip
 ```
 
-You may use `v3.11`, `v3.10`, or `v3.9` as well according to your Python 
version needs.
+You may use `v3.11`, `v3.10`, or `v3.9` according to your Python version needs.
 
 The resulting action includes a virtualenv already built for you and that is 
fast to deploy and start as all the dependencies are already resolved. Note 
that there is a limit on the size of the zip file and this approach will not 
work for installing large libraries like Pandas or Numpy, instead build a 
custom docker image that includes these libraries.
diff --git a/core/python3Action/Dockerfile b/core/python3Action/Dockerfile
deleted file mode 100644
index 291b9fb..0000000
--- a/core/python3Action/Dockerfile
+++ /dev/null
@@ -1,66 +0,0 @@
-#
-# 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.
-#
-
-# build go proxy from source
-FROM golang:1.18 AS builder_source
-ARG GO_PROXY_GITHUB_USER=apache
-ARG GO_PROXY_GITHUB_BRANCH=master
-RUN git clone --branch ${GO_PROXY_GITHUB_BRANCH} \
-   https://github.com/${GO_PROXY_GITHUB_USER}/openwhisk-runtime-go /src ;\
-   cd /src ; env GO111MODULE=on CGO_ENABLED=0 go build main/proxy.go && \
-   mv proxy /bin/proxy
-
-# or build it from a release
-FROM golang:1.18 AS builder_release
-ARG [email protected]
-RUN curl -sL \
-  
https://github.com/apache/openwhisk-runtime-go/archive/{$GO_PROXY_RELEASE_VERSION}.tar.gz\
-  | tar xzf -\
-  && cd openwhisk-runtime-go-*/main\
-  && GO111MODULE=on CGO_ENABLED=0 go build -o /bin/proxy
-
-FROM python:3.7-buster
-
-# select the builder to use
-ARG GO_PROXY_BUILD_FROM=release
-
-# Install common modules for python
-COPY requirements_common.txt requirements_common.txt
-COPY requirements.txt requirements.txt
-RUN pip3 install --upgrade pip six wheel &&\
-    pip3 install --no-cache-dir -r requirements.txt
-
-RUN mkdir -p /action
-WORKDIR /
-
-COPY --from=builder_source /bin/proxy /bin/proxy_source
-COPY --from=builder_release /bin/proxy /bin/proxy_release
-RUN mv /bin/proxy_${GO_PROXY_BUILD_FROM} /bin/proxy
-
-ADD bin/compile /bin/compile
-ADD lib/launcher.py /lib/launcher.py
-
-# log initialization errors
-ENV OW_LOG_INIT_ERROR=1
-# the launcher must wait for an ack
-ENV OW_WAIT_FOR_ACK=1
-# execution environment
-ENV OW_EXECUTION_ENV=openwhisk/action-python-v3.7
-# compiler script
-ENV OW_COMPILER=/bin/compile
-
-ENTRYPOINT ["/bin/proxy"]
diff --git a/core/python3Action/Makefile b/core/python3Action/Makefile
deleted file mode 100644
index 7430512..0000000
--- a/core/python3Action/Makefile
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# 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.
-#
-IMG=whisk/actionloop-python-v3.7:latest
-
-build:
-       docker build -t $(IMG) .
-
-clean:
-       docker rmi -f $(IMG)
-
-debug: build
-       docker run -p 8080:8080 \
-       -ti --entrypoint=/bin/bash -v $(PWD):/mnt \
-       -e OW_COMPILER=/mnt/bin/compile \
-       $(IMG)
-
-.PHONY: build clean  debug
diff --git a/core/python3Action/build.gradle b/core/python3Action/build.gradle
deleted file mode 100644
index e3b2382..0000000
--- a/core/python3Action/build.gradle
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.
- */
-
-ext.dockerImageName = 'action-python-v3.7'
-apply from: '../../gradle/docker.gradle'
-
-distDocker.dependsOn 'copyReqrCommon'
-distDocker.finalizedBy('cleanup')
-
-task copyReqrCommon(type: Copy) {
-    from '../requirements_common.txt'
-    into './'
-}
-
-task cleanup(type: Delete) {
-    delete 'requirements_common.txt'
-}
diff --git a/core/python3Action/requirements.txt 
b/core/python3Action/requirements.txt
deleted file mode 100644
index 0ab215a..0000000
--- a/core/python3Action/requirements.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-# default packages available for action-python-v3.7
--r requirements_common.txt
diff --git a/settings.gradle b/settings.gradle
index 2976fbe..9d0b863 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -17,7 +17,6 @@
 
 include 'tests'
 
-include 'core:python3Action'
 include 'core:python39Action'
 include 'core:python310Action'
 include 'core:python311Action'
diff --git a/tests/src/test/resources/build.sh 
b/tests/src/test/resources/build.sh
index a8f651c..5c53bb1 100755
--- a/tests/src/test/resources/build.sh
+++ b/tests/src/test/resources/build.sh
@@ -21,7 +21,7 @@ if [ -f ".built" ]; then
   exit 0
 fi
 
-for i in v3.7 v3.9 v3.10 v3.11
+for i in v3.9 v3.10 v3.11
 do echo "*** $i ***"
    zip -r -j - python_virtualenv | docker run -i action-python-$i -compile 
main >python-${i}_virtualenv.zip
    cp python-${i}_virtualenv.zip python-${i}_virtualenv_invalid_main.zip
diff --git a/tests/src/test/scala/runtime/actionContainers/Python310Tests.scala 
b/tests/src/test/scala/runtime/actionContainers/Python310Tests.scala
index 4db7721..a65f3a6 100644
--- a/tests/src/test/scala/runtime/actionContainers/Python310Tests.scala
+++ b/tests/src/test/scala/runtime/actionContainers/Python310Tests.scala
@@ -21,7 +21,7 @@ import org.junit.runner.RunWith
 import org.scalatest.junit.JUnitRunner
 
 @RunWith(classOf[JUnitRunner])
-class Python310Tests extends Python37Tests {
+class Python310Tests extends Python3Tests {
 
   override lazy val imageName = "action-python-v3.10"
 
diff --git a/tests/src/test/scala/runtime/actionContainers/Python311Tests.scala 
b/tests/src/test/scala/runtime/actionContainers/Python311Tests.scala
index e758872..5d36a14 100644
--- a/tests/src/test/scala/runtime/actionContainers/Python311Tests.scala
+++ b/tests/src/test/scala/runtime/actionContainers/Python311Tests.scala
@@ -21,7 +21,7 @@ import org.junit.runner.RunWith
 import org.scalatest.junit.JUnitRunner
 
 @RunWith(classOf[JUnitRunner])
-class Python311Tests extends Python37Tests {
+class Python311Tests extends Python3Tests {
 
   override lazy val imageName = "action-python-v3.11"
 
diff --git a/tests/src/test/scala/runtime/actionContainers/Python39Tests.scala 
b/tests/src/test/scala/runtime/actionContainers/Python39Tests.scala
index 344e672..cb41dab 100644
--- a/tests/src/test/scala/runtime/actionContainers/Python39Tests.scala
+++ b/tests/src/test/scala/runtime/actionContainers/Python39Tests.scala
@@ -21,7 +21,7 @@ import org.junit.runner.RunWith
 import org.scalatest.junit.JUnitRunner
 
 @RunWith(classOf[JUnitRunner])
-class Python39Tests extends Python37Tests {
+class Python39Tests extends Python3Tests {
 
   override lazy val imageName = "action-python-v3.9"
 
diff --git a/tests/src/test/scala/runtime/actionContainers/Python37Tests.scala 
b/tests/src/test/scala/runtime/actionContainers/Python3Tests.scala
similarity index 90%
rename from tests/src/test/scala/runtime/actionContainers/Python37Tests.scala
rename to tests/src/test/scala/runtime/actionContainers/Python3Tests.scala
index be40663..25d5dd1 100644
--- a/tests/src/test/scala/runtime/actionContainers/Python37Tests.scala
+++ b/tests/src/test/scala/runtime/actionContainers/Python3Tests.scala
@@ -26,16 +26,9 @@ import org.scalatest.junit.JUnitRunner
 import spray.json._
 
 @RunWith(classOf[JUnitRunner])
-class Python37Tests extends PythonBasicTests with PythonAdvancedTests with 
WskActorSystem {
+abstract class Python3Tests extends PythonBasicTests with PythonAdvancedTests 
with WskActorSystem {
 
-  override lazy val imageName = "action-python-v3.7"
-
-  lazy val zipPrefix = "python-v3.7"
-
-  override val testNoSource = TestConfig("", hasCodeStub = false)
-
-  /** actionloop based image does not log init errors - return the error in 
the body */
-  override lazy val errorCodeOnRun = false
+  lazy val zipPrefix = "???"
 
   def testArtifact(name: String): File = {
     new File(this.getClass.getClassLoader.getResource(name).toURI)
diff --git a/tutorials/local_build.md b/tutorials/local_build.md
index ab0c33f..b00adaf 100644
--- a/tutorials/local_build.md
+++ b/tutorials/local_build.md
@@ -32,45 +32,45 @@ cd openwhisk-runtime-python
 
 ## Build the docker image
 
-Build docker image using Python 3.7 (recommended). This tutorial assumes 
you're building with python 3.7.
+Build docker image using Python 3.11 (recommended). This tutorial assumes 
you're building with python 3.11.
 Run `local_build.sh` to build docker. This script takes two parameters as input
-- `-r` Specific runtime image folder name to be built, it can be one of 
`python3Action`, `python39Action`, `python310Action`, or `python311Action`
-- `-t` The name for docker image and tag used for building the docker image. 
Example: `action-python-v3.7:1.0-SNAPSHOT`
+- `-r` Specific runtime image folder name to be built, it can be one of 
`python39Action`, `python310Action`, or `python311Action`
+- `-t` The name for docker image and tag used for building the docker image. 
Example: `action-python-v3.11:1.0-SNAPSHOT`
 
 ```
 cd tutorials
 chmod 755 local_build.sh
 cd ..
-./tutorials/local_build.sh -r python3Action -t action-python-v3.7:1.0-SNAPSHOT
+./tutorials/local_build.sh -r python311Action -t 
action-python-v3.11:1.0-SNAPSHOT
 ```
 
 ### Verify docker image
 
-Check docker `IMAGE ID` (3rd column) for repository `action-python-v3.7`
+Check docker `IMAGE ID` (3rd column) for repository `action-python-v3.11`
 ```
 docker images
 ```
 If the `local_build.sh` script is sucessful, you should see an image that 
looks something like:
 ```
-action-python-v3.7         1.0-SNAPSHOT ...
+action-python-v3.11         1.0-SNAPSHOT ...
 ```
 
 ### (Optional) Tag docker image
 
 This is required if you’re pushing your docker image to a registry e.g. 
dockerHub
 ```
-docker tag <docker_image_ID> 
<dockerHub_username>/action-python-v3.7:1.0-SNAPSHOT
+docker tag <docker_image_ID> 
<dockerHub_username>/action-python-v3.11:1.0-SNAPSHOT
 ```
 
 ## Run docker image
 
 Run docker on localhost with either the following commands:
 ```
-docker run -p 127.0.0.1:80:8080/tcp --name=bloom_whisker --rm -it 
action-python-v3.7:1.0-SNAPSHOT
+docker run -p 127.0.0.1:80:8080/tcp --name=bloom_whisker --rm -it 
action-python-v3.11:1.0-SNAPSHOT
 ```
 Or run the container in the background (Add -d (detached) to the command above)
 ```
-docker run -d -p 127.0.0.1:80:8080/tcp --name=bloom_whisker --rm -it 
action-python-v3.7:1.0-SNAPSHOT
+docker run -d -p 127.0.0.1:80:8080/tcp --name=bloom_whisker --rm -it 
action-python-v3.11:1.0-SNAPSHOT
 ```
 **Note:** If you run your docker container in the background you'll want to 
stop it with:
 ```
diff --git a/tutorials/local_build.sh b/tutorials/local_build.sh
index d6f16ea..0934066 100755
--- a/tutorials/local_build.sh
+++ b/tutorials/local_build.sh
@@ -20,8 +20,8 @@ helperInstructions()
 {
    echo ""
    echo "Usage: $0 -r runtimeParameter -t dockerImageTag"
-   echo -e "\t-r Specific runtime image folder name to be built, it can be one 
of python3Action, python39Action, python310Action, or python311Action"
-   echo -e "\t-t The name for docker image and tag used for building the 
docker image. Example: action-python-v3.7:1.0-SNAPSHOT"
+   echo -e "\t-r Specific runtime image folder name to be built, it can be one 
of python39Action, python310Action, or python311Action"
+   echo -e "\t-t The name for docker image and tag used for building the 
docker image. Example: action-python-v3.11:1.0-SNAPSHOT"
    exit 1 #Exit script
 }
 
@@ -35,20 +35,14 @@ do
 done
 
 # Print helperInstructions in case parameters are empty
-if [ -z "$runtimeParameter" ] || [ -z "$dockerImageTag" ] || ( [[ 
"$runtimeParameter" != "python3Action" ]] && [[ "$runtimeParameter" != 
"python39Action" ]] && [[ "$runtimeParameter" != "python310Action" ]] && [[ 
"$runtimeParameter" != "python311Action" ]] )
+if [ -z "$runtimeParameter" ] || [ -z "$dockerImageTag" ] || ( [[ 
"$runtimeParameter" != "python39Action" ]] && [[ "$runtimeParameter" != 
"python310Action" ]] && [[ "$runtimeParameter" != "python311Action" ]] )
  then
    echo "Runtime parameter is empty or not supported";
    helperInstructions
 fi
 
 # For every runtime 1. copy the required dependent folders 2. build the docker 
image 3. delete the copied folder
-if [[ "$runtimeParameter" == "python3Action" ]]
- then
-    echo "Building docker for python3Action."
-    cp $(pwd)/core/requirements_common.txt 
$(pwd)/core/python3Action/requirements_common.txt
-    docker build -t "$dockerImageTag" $(pwd)/core/python3Action
-    rm $(pwd)/core/python3Action/requirements_common.txt
-elif [[ "$runtimeParameter" == "python39Action" ]]
+if [[ "$runtimeParameter" == "python39Action" ]]
   then
     echo "Building docker for python39Action."
     cp $(pwd)/core/requirements_common.txt 
$(pwd)/core/python39Action/requirements_common.txt

Reply via email to