prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Installed KFServing SDK 0.4 but getting import error while running the custom built image
  /kind bug
  
  **What steps did you take and what happened:**
  Run a custom built image with KFServing SDK 0.4.
  ```
  Traceback (most recent call last):
    File "/python3/lib/python3.7/runpy.py", line 193, in _run_module_as_main
      "__main__", mod_spec)
    File "/python3/lib/python3.7/runpy.py", line 85, in _run_code
      exec(code, run_globals)
    File "/job/blambda-function/image_transformer_v2/__main__.py", line 15, in <module>
      import kfserving
    File "/python3/lib/python3.7/site-packages/kfserving/__init__.py", line 18, in <module>
      from .storage import Storage
    File "/python3/lib/python3.7/site-packages/kfserving/storage.py", line 23, in <module>
      from google.cloud import storage
    File "/python3/lib/python3.7/site-packages/google/cloud/storage/__init__.py", line 39, in <module>
      from google.cloud.storage.batch import Batch
    File "/python3/lib/python3.7/site-packages/google/cloud/storage/batch.py", line 31, in <module>
      from google.cloud.storage._http import Connection
    File "/python3/lib/python3.7/site-packages/google/cloud/storage/_http.py", line 17, in <module>
      from google.cloud import _http
    File "/python3/lib/python3.7/site-packages/google/cloud/_http.py", line 22, in <module>
      from six.moves import collections_abc
  ImportError: cannot import name 'collections_abc' from 'six.moves' (unknown location)
  ```
  
  
  **What did you expect to happen:**
  
  
  **Anything else you would like to add:**
  We have fixed this in master branch but looks like we need to patch the setup.py in 0.4 branch and release a new minor version
  
  **Environment:**
  
  - Istio Version:
  - Knative Version:
  - KFServing Version:
  - Kubeflow version:
  - Kfdef:[k8s_istio/istio_dex/gcp_basic_auth/gcp_iap/aws/aws_cognito/ibm]
  - Minikube version:
  - Kubernetes version: (use `kubectl version`):
  - OS (e.g. from `/etc/os-release`):
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `python/alibiexplainer/setup.py`
  Content:
  ```
  1 # Copyright 2019 kubeflow.org.
  2 #
  3 # Licensed under the Apache License, Version 2.0 (the "License");
  4 # you may not use this file except in compliance with the License.
  5 # You may obtain a copy of the License at
  6 #
  7 #    http://www.apache.org/licenses/LICENSE-2.0
  8 #
  9 # Unless required by applicable law or agreed to in writing, software
  10 # distributed under the License is distributed on an "AS IS" BASIS,
  11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12 # See the License for the specific language governing permissions and
  13 # limitations under the License.
  14 
  15 from setuptools import setup, find_packages
  16 
  17 tests_require = [
  18     'pytest',
  19     'pytest-tornasync',
  20     'mypy'
  21 ]
  22 
  23 setup(
  24     name='alibiexplainer',
  25     version='0.4.0',
  26     author_email='cc@seldon.io',
  27     license='../../LICENSE.txt',
  28     url='https://github.com/kubeflow/kfserving/python/kfserving/alibiexplainer',
  29     description='Model Explaination Server. \
  30                  Not intended for use outside KFServing Frameworks Images',
  31     long_description=open('README.md').read(),
  32     python_requires='>=3.6',
  33     packages=find_packages("alibiexplainer"),
  34     install_requires=[
  35         "kfserving>=0.4.0",
  36         "alibi==0.4.0",
  37         "scikit-learn>=0.20.3",
  38         "argparse>=1.4.0",
  39         "requests>=2.22.0",
  40         "joblib>=0.13.2",
  41         "pandas>=0.24.2",
  42         "numpy>=1.16.3",
  43         "dill>=0.3.0",
  44         "spacy>=2.1.4"
  45     ],
  46     tests_require=tests_require,
  47     extras_require={'test': tests_require}
  48 )
  49
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/python/alibiexplainer/setup.py b/python/alibiexplainer/setup.py
  --- a/python/alibiexplainer/setup.py
  +++ b/python/alibiexplainer/setup.py
  @@ -32,6 +32,7 @@
       python_requires='>=3.6',
       packages=find_packages("alibiexplainer"),
       install_requires=[
  +        "shap==0.35",
           "kfserving>=0.4.0",
           "alibi==0.4.0",
           "scikit-learn>=0.20.3",
  
verification_info: {"golden_diff": "diff --git a/python/alibiexplainer/setup.py b/python/alibiexplainer/setup.py\n--- a/python/alibiexplainer/setup.py\n+++ b/python/alibiexplainer/setup.py\n@@ -32,6 +32,7 @@\n     python_requires='>=3.6',\n     packages=find_packages(\"alibiexplainer\"),\n     install_requires=[\n+        \"shap==0.35\",\n         \"kfserving>=0.4.0\",\n         \"alibi==0.4.0\",\n         \"scikit-learn>=0.20.3\",\n", "issue": "Installed KFServing SDK 0.4 but getting import error while running the custom built image\n/kind bug\r\n\r\n**What steps did you take and what happened:**\r\nRun a custom built image with KFServing SDK 0.4.\r\n```\r\nTraceback (most recent call last):\r\n  File \"/python3/lib/python3.7/runpy.py\", line 193, in _run_module_as_main\r\n    \"__main__\", mod_spec)\r\n  File \"/python3/lib/python3.7/runpy.py\", line 85, in _run_code\r\n    exec(code, run_globals)\r\n  File \"/job/blambda-function/image_transformer_v2/__main__.py\", line 15, in <module>\r\n    import kfserving\r\n  File \"/python3/lib/python3.7/site-packages/kfserving/__init__.py\", line 18, in <module>\r\n    from .storage import Storage\r\n  File \"/python3/lib/python3.7/site-packages/kfserving/storage.py\", line 23, in <module>\r\n    from google.cloud import storage\r\n  File \"/python3/lib/python3.7/site-packages/google/cloud/storage/__init__.py\", line 39, in <module>\r\n    from google.cloud.storage.batch import Batch\r\n  File \"/python3/lib/python3.7/site-packages/google/cloud/storage/batch.py\", line 31, in <module>\r\n    from google.cloud.storage._http import Connection\r\n  File \"/python3/lib/python3.7/site-packages/google/cloud/storage/_http.py\", line 17, in <module>\r\n    from google.cloud import _http\r\n  File \"/python3/lib/python3.7/site-packages/google/cloud/_http.py\", line 22, in <module>\r\n    from six.moves import collections_abc\r\nImportError: cannot import name 'collections_abc' from 'six.moves' (unknown location)\r\n```\r\n\r\n\r\n**What did you expect to happen:**\r\n\r\n\r\n**Anything else you would like to add:**\r\nWe have fixed this in master branch but looks like we need to patch the setup.py in 0.4 branch and release a new minor version\r\n\r\n**Environment:**\r\n\r\n- Istio Version:\r\n- Knative Version:\r\n- KFServing Version:\r\n- Kubeflow version:\r\n- Kfdef:[k8s_istio/istio_dex/gcp_basic_auth/gcp_iap/aws/aws_cognito/ibm]\r\n- Minikube version:\r\n- Kubernetes version: (use `kubectl version`):\r\n- OS (e.g. from `/etc/os-release`):\r\n\n", "before_files": [{"content": "# Copyright 2019 kubeflow.org.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfrom setuptools import setup, find_packages\n\ntests_require = [\n    'pytest',\n    'pytest-tornasync',\n    'mypy'\n]\n\nsetup(\n    name='alibiexplainer',\n    version='0.4.0',\n    author_email='cc@seldon.io',\n    license='../../LICENSE.txt',\n    url='https://github.com/kubeflow/kfserving/python/kfserving/alibiexplainer',\n    description='Model Explaination Server. \\\n                 Not intended for use outside KFServing Frameworks Images',\n    long_description=open('README.md').read(),\n    python_requires='>=3.6',\n    packages=find_packages(\"alibiexplainer\"),\n    install_requires=[\n        \"kfserving>=0.4.0\",\n        \"alibi==0.4.0\",\n        \"scikit-learn>=0.20.3\",\n        \"argparse>=1.4.0\",\n        \"requests>=2.22.0\",\n        \"joblib>=0.13.2\",\n        \"pandas>=0.24.2\",\n        \"numpy>=1.16.3\",\n        \"dill>=0.3.0\",\n        \"spacy>=2.1.4\"\n    ],\n    tests_require=tests_require,\n    extras_require={'test': tests_require}\n)\n", "path": "python/alibiexplainer/setup.py"}], "after_files": [{"content": "# Copyright 2019 kubeflow.org.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfrom setuptools import setup, find_packages\n\ntests_require = [\n    'pytest',\n    'pytest-tornasync',\n    'mypy'\n]\n\nsetup(\n    name='alibiexplainer',\n    version='0.4.0',\n    author_email='cc@seldon.io',\n    license='../../LICENSE.txt',\n    url='https://github.com/kubeflow/kfserving/python/kfserving/alibiexplainer',\n    description='Model Explaination Server. \\\n                 Not intended for use outside KFServing Frameworks Images',\n    long_description=open('README.md').read(),\n    python_requires='>=3.6',\n    packages=find_packages(\"alibiexplainer\"),\n    install_requires=[\n        \"shap==0.35\",\n        \"kfserving>=0.4.0\",\n        \"alibi==0.4.0\",\n        \"scikit-learn>=0.20.3\",\n        \"argparse>=1.4.0\",\n        \"requests>=2.22.0\",\n        \"joblib>=0.13.2\",\n        \"pandas>=0.24.2\",\n        \"numpy>=1.16.3\",\n        \"dill>=0.3.0\",\n        \"spacy>=2.1.4\"\n    ],\n    tests_require=tests_require,\n    extras_require={'test': tests_require}\n)\n", "path": "python/alibiexplainer/setup.py"}]}