prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  `pip install kfp` does not install CLI
  **What happened:**
  
  ```
  $ virtualenv .venv
  ...
  $ pip install kfp==0.1.23
  ...
  $ kfp
  Traceback (most recent call last):
    File "/private/tmp/.venv/bin/kfp", line 6, in <module>
      from kfp.__main__ import main
    File "/private/tmp/.venv/lib/python3.7/site-packages/kfp/__main__.py", line 15, in <module>
      from .cli.cli import main
  ModuleNotFoundError: No module named 'kfp.cli'
  ```
  
  **What did you expect to happen:**
  To run the CLI.
  
  **Anything else you would like to add:**
  I could be confused about what is expected to be available after installing the kfp package from pip - setup.py mentions an entrypoint named kfp in 
  
  https://github.com/kubeflow/pipelines/blob/812ca7f8836c47039c3b1f3daf23e68fbcee1a92/sdk/python/setup.py#L74
  
  but main.py imports a `kfp.cli` package https://github.com/kubeflow/pipelines/blob/812ca7f8836c47039c3b1f3daf23e68fbcee1a92/sdk/python/kfp/__main__.py#L15
  
  which is not included in the distribution https://github.com/kubeflow/pipelines/blob/812ca7f8836c47039c3b1f3daf23e68fbcee1a92/sdk/python/setup.py#L46-L54
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `sdk/python/setup.py`
  Content:
  ```
  1 # Copyright 2018 Google LLC
  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
  16 
  17 NAME = 'kfp'
  18 VERSION = '0.1.24'
  19 
  20 REQUIRES = [
  21     'urllib3>=1.15,<1.25', #Fixing the version conflict with the "requests" package
  22     'six >= 1.10',
  23     'certifi',
  24     'python-dateutil',
  25     'PyYAML',
  26     'google-cloud-storage>=1.13.0',
  27     'kubernetes>=8.0.0, <=9.0.0',
  28     'PyJWT>=1.6.4',
  29     'cryptography>=2.4.2',
  30     'google-auth>=1.6.1',
  31     'requests_toolbelt>=0.8.0',
  32     'cloudpickle',
  33     'kfp-server-api >= 0.1.18, < 0.1.19', #Update the upper version whenever a new version of the kfp-server-api package is released. Update the lower version when there is a breaking change in kfp-server-api.
  34     'argo-models == 2.2.1a',  #2.2.1a is equivalent to argo 2.2.1
  35     'jsonschema >= 3.0.1',
  36     'tabulate == 0.8.3',
  37     'click == 7.0'
  38 ]
  39 
  40 setup(
  41     name=NAME,
  42     version=VERSION,
  43     description='KubeFlow Pipelines SDK',
  44     author='google',
  45     install_requires=REQUIRES,
  46     packages=[
  47         'kfp',
  48         'kfp.compiler',
  49         'kfp.components',
  50         'kfp.components.structures',
  51         'kfp.components.structures.kubernetes',
  52         'kfp.dsl',
  53         'kfp.notebook',
  54     ],
  55     classifiers=[
  56         'Intended Audience :: Developers',
  57         'Intended Audience :: Education',
  58         'Intended Audience :: Science/Research',
  59         'License :: OSI Approved :: Apache Software License',
  60         'Programming Language :: Python :: 3',
  61         'Programming Language :: Python :: 3.5',
  62         'Programming Language :: Python :: 3.6',
  63         'Programming Language :: Python :: 3.7',
  64         'Topic :: Scientific/Engineering',
  65         'Topic :: Scientific/Engineering :: Artificial Intelligence',
  66         'Topic :: Software Development',
  67         'Topic :: Software Development :: Libraries',
  68         'Topic :: Software Development :: Libraries :: Python Modules',
  69     ],
  70     python_requires='>=3.5.3',
  71     include_package_data=True,
  72     entry_points={'console_scripts': [
  73         'dsl-compile = kfp.compiler.main:main',
  74         'kfp=kfp.__main__:main']})
  75
  ```
  --- 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/sdk/python/setup.py b/sdk/python/setup.py
  --- a/sdk/python/setup.py
  +++ b/sdk/python/setup.py
  @@ -45,6 +45,7 @@
       install_requires=REQUIRES,
       packages=[
           'kfp',
  +        'kfp.cli',
           'kfp.compiler',
           'kfp.components',
           'kfp.components.structures',
  
verification_info: {"golden_diff": "diff --git a/sdk/python/setup.py b/sdk/python/setup.py\n--- a/sdk/python/setup.py\n+++ b/sdk/python/setup.py\n@@ -45,6 +45,7 @@\n     install_requires=REQUIRES,\n     packages=[\n         'kfp',\n+        'kfp.cli',\n         'kfp.compiler',\n         'kfp.components',\n         'kfp.components.structures',\n", "issue": "`pip install kfp` does not install CLI\n**What happened:**\r\n\r\n```\r\n$ virtualenv .venv\r\n...\r\n$ pip install kfp==0.1.23\r\n...\r\n$ kfp\r\nTraceback (most recent call last):\r\n  File \"/private/tmp/.venv/bin/kfp\", line 6, in <module>\r\n    from kfp.__main__ import main\r\n  File \"/private/tmp/.venv/lib/python3.7/site-packages/kfp/__main__.py\", line 15, in <module>\r\n    from .cli.cli import main\r\nModuleNotFoundError: No module named 'kfp.cli'\r\n```\r\n\r\n**What did you expect to happen:**\r\nTo run the CLI.\r\n\r\n**Anything else you would like to add:**\r\nI could be confused about what is expected to be available after installing the kfp package from pip - setup.py mentions an entrypoint named kfp in \r\n\r\nhttps://github.com/kubeflow/pipelines/blob/812ca7f8836c47039c3b1f3daf23e68fbcee1a92/sdk/python/setup.py#L74\r\n\r\nbut main.py imports a `kfp.cli` package https://github.com/kubeflow/pipelines/blob/812ca7f8836c47039c3b1f3daf23e68fbcee1a92/sdk/python/kfp/__main__.py#L15\r\n\r\nwhich is not included in the distribution https://github.com/kubeflow/pipelines/blob/812ca7f8836c47039c3b1f3daf23e68fbcee1a92/sdk/python/setup.py#L46-L54\r\n\n", "before_files": [{"content": "# Copyright 2018 Google LLC\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\n\nNAME = 'kfp'\nVERSION = '0.1.24'\n\nREQUIRES = [\n    'urllib3>=1.15,<1.25', #Fixing the version conflict with the \"requests\" package\n    'six >= 1.10',\n    'certifi',\n    'python-dateutil',\n    'PyYAML',\n    'google-cloud-storage>=1.13.0',\n    'kubernetes>=8.0.0, <=9.0.0',\n    'PyJWT>=1.6.4',\n    'cryptography>=2.4.2',\n    'google-auth>=1.6.1',\n    'requests_toolbelt>=0.8.0',\n    'cloudpickle',\n    'kfp-server-api >= 0.1.18, < 0.1.19', #Update the upper version whenever a new version of the kfp-server-api package is released. Update the lower version when there is a breaking change in kfp-server-api.\n    'argo-models == 2.2.1a',  #2.2.1a is equivalent to argo 2.2.1\n    'jsonschema >= 3.0.1',\n    'tabulate == 0.8.3',\n    'click == 7.0'\n]\n\nsetup(\n    name=NAME,\n    version=VERSION,\n    description='KubeFlow Pipelines SDK',\n    author='google',\n    install_requires=REQUIRES,\n    packages=[\n        'kfp',\n        'kfp.compiler',\n        'kfp.components',\n        'kfp.components.structures',\n        'kfp.components.structures.kubernetes',\n        'kfp.dsl',\n        'kfp.notebook',\n    ],\n    classifiers=[\n        'Intended Audience :: Developers',\n        'Intended Audience :: Education',\n        'Intended Audience :: Science/Research',\n        'License :: OSI Approved :: Apache Software License',\n        'Programming Language :: Python :: 3',\n        'Programming Language :: Python :: 3.5',\n        'Programming Language :: Python :: 3.6',\n        'Programming Language :: Python :: 3.7',\n        'Topic :: Scientific/Engineering',\n        'Topic :: Scientific/Engineering :: Artificial Intelligence',\n        'Topic :: Software Development',\n        'Topic :: Software Development :: Libraries',\n        'Topic :: Software Development :: Libraries :: Python Modules',\n    ],\n    python_requires='>=3.5.3',\n    include_package_data=True,\n    entry_points={'console_scripts': [\n        'dsl-compile = kfp.compiler.main:main',\n        'kfp=kfp.__main__:main']})\n", "path": "sdk/python/setup.py"}], "after_files": [{"content": "# Copyright 2018 Google LLC\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\n\nNAME = 'kfp'\nVERSION = '0.1.24'\n\nREQUIRES = [\n    'urllib3>=1.15,<1.25', #Fixing the version conflict with the \"requests\" package\n    'six >= 1.10',\n    'certifi',\n    'python-dateutil',\n    'PyYAML',\n    'google-cloud-storage>=1.13.0',\n    'kubernetes>=8.0.0, <=9.0.0',\n    'PyJWT>=1.6.4',\n    'cryptography>=2.4.2',\n    'google-auth>=1.6.1',\n    'requests_toolbelt>=0.8.0',\n    'cloudpickle',\n    'kfp-server-api >= 0.1.18, < 0.1.19', #Update the upper version whenever a new version of the kfp-server-api package is released. Update the lower version when there is a breaking change in kfp-server-api.\n    'argo-models == 2.2.1a',  #2.2.1a is equivalent to argo 2.2.1\n    'jsonschema >= 3.0.1',\n    'tabulate == 0.8.3',\n    'click == 7.0'\n]\n\nsetup(\n    name=NAME,\n    version=VERSION,\n    description='KubeFlow Pipelines SDK',\n    author='google',\n    install_requires=REQUIRES,\n    packages=[\n        'kfp',\n        'kfp.cli',\n        'kfp.compiler',\n        'kfp.components',\n        'kfp.components.structures',\n        'kfp.components.structures.kubernetes',\n        'kfp.dsl',\n        'kfp.notebook',\n    ],\n    classifiers=[\n        'Intended Audience :: Developers',\n        'Intended Audience :: Education',\n        'Intended Audience :: Science/Research',\n        'License :: OSI Approved :: Apache Software License',\n        'Programming Language :: Python :: 3',\n        'Programming Language :: Python :: 3.5',\n        'Programming Language :: Python :: 3.6',\n        'Programming Language :: Python :: 3.7',\n        'Topic :: Scientific/Engineering',\n        'Topic :: Scientific/Engineering :: Artificial Intelligence',\n        'Topic :: Software Development',\n        'Topic :: Software Development :: Libraries',\n        'Topic :: Software Development :: Libraries :: Python Modules',\n    ],\n    python_requires='>=3.5.3',\n    include_package_data=True,\n    entry_points={'console_scripts': [\n        'dsl-compile = kfp.compiler.main:main',\n        'kfp=kfp.__main__:main']})\n", "path": "sdk/python/setup.py"}]}