prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Cirq should ship a py.typed file
  [PEP 561](https://www.python.org/dev/peps/pep-0561/) says that any packages that ship with type information should have a py.typed file in their package. Otherwise, type checkers like mypy can't find Cirq. (FWIW I just did `touch ~/.virtualenvs/.../cirq/py.typed`, and then mypy type-checks the file correctly.)
  
  Other than that, Cirq seems pretty awesome so far :ok_hand:.
  Cirq should ship a py.typed file
  [PEP 561](https://www.python.org/dev/peps/pep-0561/) says that any packages that ship with type information should have a py.typed file in their package. Otherwise, type checkers like mypy can't find Cirq. (FWIW I just did `touch ~/.virtualenvs/.../cirq/py.typed`, and then mypy type-checks the file correctly.)
  
  Other than that, Cirq seems pretty awesome so far :ok_hand:.
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `setup.py`
  Content:
  ```
  1 # Copyright 2018 The Cirq Developers
  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 #     https://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 import io
  16 import os
  17 from setuptools import find_packages, setup
  18 
  19 # This reads the __version__ variable from cirq/_version.py
  20 __version__ = ''
  21 exec(open('cirq/_version.py').read())
  22 
  23 name = 'cirq'
  24 
  25 description = ('A framework for creating, editing, and invoking '
  26                'Noisy Intermediate Scale Quantum (NISQ) circuits.')
  27 
  28 # README file as long_description.
  29 long_description = io.open('README.rst', encoding='utf-8').read()
  30 
  31 # If CIRQ_DEV_VERSION is set then we use cirq-dev as the name of the package
  32 # and update the version to this value.
  33 if 'CIRQ_DEV_VERSION' in os.environ:
  34     name = 'cirq-dev'
  35     __version__ = os.environ['CIRQ_DEV_VERSION']
  36     long_description = (
  37         "**This is a development version of Cirq and may be "
  38         "unstable.**\n\n**For the latest stable release of Cirq "
  39         "see**\n`here <https://pypi.org/project/cirq>`__.\n\n" +
  40         long_description)
  41 
  42 # Read in requirements
  43 requirements = open('requirements.txt').readlines()
  44 requirements = [r.strip() for r in requirements]
  45 contrib_requirements = open('cirq/contrib/contrib-requirements.txt').readlines()
  46 contrib_requirements = [r.strip() for r in contrib_requirements]
  47 dev_requirements = open('dev_tools/conf/pip-list-dev-tools.txt').readlines()
  48 dev_requirements = [r.strip() for r in dev_requirements]
  49 
  50 cirq_packages = ['cirq'] + [
  51     'cirq.' + package for package in find_packages(where='cirq')
  52 ]
  53 
  54 # Sanity check
  55 assert __version__, 'Version string cannot be empty'
  56 
  57 setup(name=name,
  58       version=__version__,
  59       url='http://github.com/quantumlib/cirq',
  60       author='The Cirq Developers',
  61       author_email='cirq@googlegroups.com',
  62       python_requires=('>=3.6.0'),
  63       install_requires=requirements,
  64       extras_require={
  65           'contrib': contrib_requirements,
  66           'dev_env': dev_requirements + contrib_requirements,
  67       },
  68       license='Apache 2',
  69       description=description,
  70       long_description=long_description,
  71       packages=cirq_packages,
  72       package_data={
  73           'cirq.api.google.v1': ['*.proto'],
  74           'cirq.api.google.v2': ['*.proto'],
  75           'cirq.google.api.v1': ['*.proto'],
  76           'cirq.google.api.v2': ['*.proto'],
  77       })
  78
  ```
  --- 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/setup.py b/setup.py
  --- a/setup.py
  +++ b/setup.py
  @@ -70,6 +70,7 @@
         long_description=long_description,
         packages=cirq_packages,
         package_data={
  +          'cirq': ['py.typed'],
             'cirq.api.google.v1': ['*.proto'],
             'cirq.api.google.v2': ['*.proto'],
             'cirq.google.api.v1': ['*.proto'],
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -70,6 +70,7 @@\n       long_description=long_description,\n       packages=cirq_packages,\n       package_data={\n+          'cirq': ['py.typed'],\n           'cirq.api.google.v1': ['*.proto'],\n           'cirq.api.google.v2': ['*.proto'],\n           'cirq.google.api.v1': ['*.proto'],\n", "issue": "Cirq should ship a py.typed file\n[PEP 561](https://www.python.org/dev/peps/pep-0561/) says that any packages that ship with type information should have a py.typed file in their package. Otherwise, type checkers like mypy can't find Cirq. (FWIW I just did `touch ~/.virtualenvs/.../cirq/py.typed`, and then mypy type-checks the file correctly.)\r\n\r\nOther than that, Cirq seems pretty awesome so far :ok_hand:.\nCirq should ship a py.typed file\n[PEP 561](https://www.python.org/dev/peps/pep-0561/) says that any packages that ship with type information should have a py.typed file in their package. Otherwise, type checkers like mypy can't find Cirq. (FWIW I just did `touch ~/.virtualenvs/.../cirq/py.typed`, and then mypy type-checks the file correctly.)\r\n\r\nOther than that, Cirq seems pretty awesome so far :ok_hand:.\n", "before_files": [{"content": "# Copyright 2018 The Cirq Developers\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#     https://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\nimport io\nimport os\nfrom setuptools import find_packages, setup\n\n# This reads the __version__ variable from cirq/_version.py\n__version__ = ''\nexec(open('cirq/_version.py').read())\n\nname = 'cirq'\n\ndescription = ('A framework for creating, editing, and invoking '\n               'Noisy Intermediate Scale Quantum (NISQ) circuits.')\n\n# README file as long_description.\nlong_description = io.open('README.rst', encoding='utf-8').read()\n\n# If CIRQ_DEV_VERSION is set then we use cirq-dev as the name of the package\n# and update the version to this value.\nif 'CIRQ_DEV_VERSION' in os.environ:\n    name = 'cirq-dev'\n    __version__ = os.environ['CIRQ_DEV_VERSION']\n    long_description = (\n        \"**This is a development version of Cirq and may be \"\n        \"unstable.**\\n\\n**For the latest stable release of Cirq \"\n        \"see**\\n`here <https://pypi.org/project/cirq>`__.\\n\\n\" +\n        long_description)\n\n# Read in requirements\nrequirements = open('requirements.txt').readlines()\nrequirements = [r.strip() for r in requirements]\ncontrib_requirements = open('cirq/contrib/contrib-requirements.txt').readlines()\ncontrib_requirements = [r.strip() for r in contrib_requirements]\ndev_requirements = open('dev_tools/conf/pip-list-dev-tools.txt').readlines()\ndev_requirements = [r.strip() for r in dev_requirements]\n\ncirq_packages = ['cirq'] + [\n    'cirq.' + package for package in find_packages(where='cirq')\n]\n\n# Sanity check\nassert __version__, 'Version string cannot be empty'\n\nsetup(name=name,\n      version=__version__,\n      url='http://github.com/quantumlib/cirq',\n      author='The Cirq Developers',\n      author_email='cirq@googlegroups.com',\n      python_requires=('>=3.6.0'),\n      install_requires=requirements,\n      extras_require={\n          'contrib': contrib_requirements,\n          'dev_env': dev_requirements + contrib_requirements,\n      },\n      license='Apache 2',\n      description=description,\n      long_description=long_description,\n      packages=cirq_packages,\n      package_data={\n          'cirq.api.google.v1': ['*.proto'],\n          'cirq.api.google.v2': ['*.proto'],\n          'cirq.google.api.v1': ['*.proto'],\n          'cirq.google.api.v2': ['*.proto'],\n      })\n", "path": "setup.py"}], "after_files": [{"content": "# Copyright 2018 The Cirq Developers\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#     https://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\nimport io\nimport os\nfrom setuptools import find_packages, setup\n\n# This reads the __version__ variable from cirq/_version.py\n__version__ = ''\nexec(open('cirq/_version.py').read())\n\nname = 'cirq'\n\ndescription = ('A framework for creating, editing, and invoking '\n               'Noisy Intermediate Scale Quantum (NISQ) circuits.')\n\n# README file as long_description.\nlong_description = io.open('README.rst', encoding='utf-8').read()\n\n# If CIRQ_DEV_VERSION is set then we use cirq-dev as the name of the package\n# and update the version to this value.\nif 'CIRQ_DEV_VERSION' in os.environ:\n    name = 'cirq-dev'\n    __version__ = os.environ['CIRQ_DEV_VERSION']\n    long_description = (\n        \"**This is a development version of Cirq and may be \"\n        \"unstable.**\\n\\n**For the latest stable release of Cirq \"\n        \"see**\\n`here <https://pypi.org/project/cirq>`__.\\n\\n\" +\n        long_description)\n\n# Read in requirements\nrequirements = open('requirements.txt').readlines()\nrequirements = [r.strip() for r in requirements]\ncontrib_requirements = open('cirq/contrib/contrib-requirements.txt').readlines()\ncontrib_requirements = [r.strip() for r in contrib_requirements]\ndev_requirements = open('dev_tools/conf/pip-list-dev-tools.txt').readlines()\ndev_requirements = [r.strip() for r in dev_requirements]\n\ncirq_packages = ['cirq'] + [\n    'cirq.' + package for package in find_packages(where='cirq')\n]\n\n# Sanity check\nassert __version__, 'Version string cannot be empty'\n\nsetup(name=name,\n      version=__version__,\n      url='http://github.com/quantumlib/cirq',\n      author='The Cirq Developers',\n      author_email='cirq@googlegroups.com',\n      python_requires=('>=3.6.0'),\n      install_requires=requirements,\n      extras_require={\n          'contrib': contrib_requirements,\n          'dev_env': dev_requirements + contrib_requirements,\n      },\n      license='Apache 2',\n      description=description,\n      long_description=long_description,\n      packages=cirq_packages,\n      package_data={\n          'cirq': ['py.typed'],\n          'cirq.api.google.v1': ['*.proto'],\n          'cirq.api.google.v2': ['*.proto'],\n          'cirq.google.api.v1': ['*.proto'],\n          'cirq.google.api.v2': ['*.proto'],\n      })\n", "path": "setup.py"}]}