prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  py.typed missing in published artifacts
  I didn’t check for earlier versions, but at least 0.11.4 on PyPI does not include `py.typed`. I assume this is an oversight, given it is mentioned in `setup.py`?
  
  https://github.com/encode/starlette/blob/77b84a08c1e4de0db64a197b58ac363a26c51d4f/setup.py#L49
  
  --- 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 #!/usr/bin/env python
  2 # -*- coding: utf-8 -*-
  3 
  4 import os
  5 import re
  6 
  7 from setuptools import setup
  8 
  9 
  10 def get_version(package):
  11     """
  12     Return package version as listed in `__version__` in `init.py`.
  13     """
  14     with open(os.path.join(package, "__init__.py")) as f:
  15         return re.search("__version__ = ['\"]([^'\"]+)['\"]", f.read()).group(1)
  16 
  17 
  18 def get_long_description():
  19     """
  20     Return the README.
  21     """
  22     with open("README.md", encoding="utf8") as f:
  23         return f.read()
  24 
  25 
  26 def get_packages(package):
  27     """
  28     Return root package and all sub-packages.
  29     """
  30     return [
  31         dirpath
  32         for dirpath, dirnames, filenames in os.walk(package)
  33         if os.path.exists(os.path.join(dirpath, "__init__.py"))
  34     ]
  35 
  36 
  37 setup(
  38     name="starlette",
  39     python_requires=">=3.6",
  40     version=get_version("starlette"),
  41     url="https://github.com/encode/starlette",
  42     license="BSD",
  43     description="The little ASGI library that shines.",
  44     long_description=get_long_description(),
  45     long_description_content_type="text/markdown",
  46     author="Tom Christie",
  47     author_email="tom@tomchristie.com",
  48     packages=get_packages("starlette"),
  49     package_data={"starlette": ["py.typed"]},
  50     data_files=[("", ["LICENSE.md"])],
  51     extras_require={
  52         "full": [
  53             "aiofiles",
  54             "asyncpg",
  55             "graphene",
  56             "itsdangerous",
  57             "jinja2",
  58             "python-multipart",
  59             "pyyaml",
  60             "requests",
  61             "ujson",
  62         ]
  63     },
  64     classifiers=[
  65         "Development Status :: 3 - Alpha",
  66         "Environment :: Web Environment",
  67         "Intended Audience :: Developers",
  68         "License :: OSI Approved :: BSD License",
  69         "Operating System :: OS Independent",
  70         "Topic :: Internet :: WWW/HTTP",
  71         "Programming Language :: Python :: 3",
  72         "Programming Language :: Python :: 3.6",
  73         "Programming Language :: Python :: 3.7",
  74     ],
  75 )
  76
  ```
  --- 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
  @@ -72,4 +72,5 @@
           "Programming Language :: Python :: 3.6",
           "Programming Language :: Python :: 3.7",
       ],
  +    zip_safe=False,
   )
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -72,4 +72,5 @@\n         \"Programming Language :: Python :: 3.6\",\n         \"Programming Language :: Python :: 3.7\",\n     ],\n+    zip_safe=False,\n )\n", "issue": "py.typed missing in published artifacts\nI didn\u2019t check for earlier versions, but at least 0.11.4 on PyPI does not include `py.typed`. I assume this is an oversight, given it is mentioned in `setup.py`?\r\n\r\nhttps://github.com/encode/starlette/blob/77b84a08c1e4de0db64a197b58ac363a26c51d4f/setup.py#L49\n", "before_files": [{"content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\nimport os\nimport re\n\nfrom setuptools import setup\n\n\ndef get_version(package):\n    \"\"\"\n    Return package version as listed in `__version__` in `init.py`.\n    \"\"\"\n    with open(os.path.join(package, \"__init__.py\")) as f:\n        return re.search(\"__version__ = ['\\\"]([^'\\\"]+)['\\\"]\", f.read()).group(1)\n\n\ndef get_long_description():\n    \"\"\"\n    Return the README.\n    \"\"\"\n    with open(\"README.md\", encoding=\"utf8\") as f:\n        return f.read()\n\n\ndef get_packages(package):\n    \"\"\"\n    Return root package and all sub-packages.\n    \"\"\"\n    return [\n        dirpath\n        for dirpath, dirnames, filenames in os.walk(package)\n        if os.path.exists(os.path.join(dirpath, \"__init__.py\"))\n    ]\n\n\nsetup(\n    name=\"starlette\",\n    python_requires=\">=3.6\",\n    version=get_version(\"starlette\"),\n    url=\"https://github.com/encode/starlette\",\n    license=\"BSD\",\n    description=\"The little ASGI library that shines.\",\n    long_description=get_long_description(),\n    long_description_content_type=\"text/markdown\",\n    author=\"Tom Christie\",\n    author_email=\"tom@tomchristie.com\",\n    packages=get_packages(\"starlette\"),\n    package_data={\"starlette\": [\"py.typed\"]},\n    data_files=[(\"\", [\"LICENSE.md\"])],\n    extras_require={\n        \"full\": [\n            \"aiofiles\",\n            \"asyncpg\",\n            \"graphene\",\n            \"itsdangerous\",\n            \"jinja2\",\n            \"python-multipart\",\n            \"pyyaml\",\n            \"requests\",\n            \"ujson\",\n        ]\n    },\n    classifiers=[\n        \"Development Status :: 3 - Alpha\",\n        \"Environment :: Web Environment\",\n        \"Intended Audience :: Developers\",\n        \"License :: OSI Approved :: BSD License\",\n        \"Operating System :: OS Independent\",\n        \"Topic :: Internet :: WWW/HTTP\",\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n    ],\n)\n", "path": "setup.py"}], "after_files": [{"content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\nimport os\nimport re\n\nfrom setuptools import setup\n\n\ndef get_version(package):\n    \"\"\"\n    Return package version as listed in `__version__` in `init.py`.\n    \"\"\"\n    with open(os.path.join(package, \"__init__.py\")) as f:\n        return re.search(\"__version__ = ['\\\"]([^'\\\"]+)['\\\"]\", f.read()).group(1)\n\n\ndef get_long_description():\n    \"\"\"\n    Return the README.\n    \"\"\"\n    with open(\"README.md\", encoding=\"utf8\") as f:\n        return f.read()\n\n\ndef get_packages(package):\n    \"\"\"\n    Return root package and all sub-packages.\n    \"\"\"\n    return [\n        dirpath\n        for dirpath, dirnames, filenames in os.walk(package)\n        if os.path.exists(os.path.join(dirpath, \"__init__.py\"))\n    ]\n\n\nsetup(\n    name=\"starlette\",\n    python_requires=\">=3.6\",\n    version=get_version(\"starlette\"),\n    url=\"https://github.com/encode/starlette\",\n    license=\"BSD\",\n    description=\"The little ASGI library that shines.\",\n    long_description=get_long_description(),\n    long_description_content_type=\"text/markdown\",\n    author=\"Tom Christie\",\n    author_email=\"tom@tomchristie.com\",\n    packages=get_packages(\"starlette\"),\n    package_data={\"starlette\": [\"py.typed\"]},\n    data_files=[(\"\", [\"LICENSE.md\"])],\n    extras_require={\n        \"full\": [\n            \"aiofiles\",\n            \"asyncpg\",\n            \"graphene\",\n            \"itsdangerous\",\n            \"jinja2\",\n            \"python-multipart\",\n            \"pyyaml\",\n            \"requests\",\n            \"ujson\",\n        ]\n    },\n    classifiers=[\n        \"Development Status :: 3 - Alpha\",\n        \"Environment :: Web Environment\",\n        \"Intended Audience :: Developers\",\n        \"License :: OSI Approved :: BSD License\",\n        \"Operating System :: OS Independent\",\n        \"Topic :: Internet :: WWW/HTTP\",\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n    ],\n    zip_safe=False,\n)\n", "path": "setup.py"}]}