prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Add README to PyPI
  # Description
  
  At the moment we have no README for the [PyPI page](https://pypi.org/project/pyhf/0.0.15/). The addition of one would be a nice touch (even though I assume that most users will discover the project through GitHub).
  
  </issue>
  <code>
  [start of setup.py]
  1 #!/usr/bin/env python
  2 
  3 from setuptools import setup, find_packages
  4 
  5 extras_require = {
  6     'tensorflow': [
  7         'tensorflow>=1.10.0',
  8         'tensorflow-probability==0.3.0',
  9         'numpy<=1.14.5,>=1.14.0',  # Lower of 1.14.0 instead of 1.13.3 to ensure doctest pass
  10         'setuptools<=39.1.0',
  11     ],
  12     'torch': ['torch>=0.4.0'],
  13     'mxnet': [
  14         'mxnet>=1.0.0',
  15         'requests<2.19.0,>=2.18.4',
  16         'numpy<1.15.0,>=1.8.2',
  17         'requests<2.19.0,>=2.18.4',
  18     ],
  19     # 'dask': [
  20     #     'dask[array]'
  21     # ],
  22     'xmlimport': ['uproot'],
  23     'minuit': ['iminuit'],
  24     'develop': [
  25         'pyflakes',
  26         'pytest>=3.5.1',
  27         'pytest-cov>=2.5.1',
  28         'pytest-benchmark[histogram]',
  29         'pytest-console-scripts',
  30         'python-coveralls',
  31         'coverage>=4.0',  # coveralls
  32         'matplotlib',
  33         'jupyter',
  34         'nbdime',
  35         'uproot>=3.0.0',
  36         'papermill',
  37         'graphviz',
  38         'bumpversion',
  39         'sphinx',
  40         'sphinxcontrib-bibtex',
  41         'sphinxcontrib-napoleon',
  42         'sphinx_rtd_theme',
  43         'nbsphinx',
  44         'm2r',
  45         'jsonpatch',
  46         'ipython<7',  # jupyter_console and ipython clash in dependency requirement -- downgrade ipython for now
  47         'pre-commit',
  48         'black;python_version>="3.6"',  # Black is Python3 only
  49     ],
  50 }
  51 extras_require['complete'] = sorted(set(sum(extras_require.values(), [])))
  52 
  53 setup(
  54     name='pyhf',
  55     version='0.0.15',
  56     description='(partial) pure python histfactory implementation',
  57     url='https://github.com/diana-hep/pyhf',
  58     author='Lukas Heinrich',
  59     author_email='lukas.heinrich@cern.ch',
  60     license='Apache',
  61     keywords='physics fitting numpy scipy tensorflow pytorch mxnet dask',
  62     classifiers=[
  63         "Programming Language :: Python :: 2",
  64         "Programming Language :: Python :: 2.7",
  65         "Programming Language :: Python :: 3",
  66         "Programming Language :: Python :: 3.6",
  67     ],
  68     packages=find_packages(),
  69     include_package_data=True,
  70     python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*",
  71     install_requires=[
  72         'scipy',  # requires numpy, which is required by pyhf, tensorflow, and mxnet
  73         'click>=6.0',  # for console scripts,
  74         'tqdm',  # for readxml
  75         'six',  # for modifiers
  76         'jsonschema>=v3.0.0a2',  # for utils, alpha-release for draft 6
  77         'jsonpatch',
  78     ],
  79     extras_require=extras_require,
  80     entry_points={'console_scripts': ['pyhf=pyhf.commandline:pyhf']},
  81     dependency_links=[],
  82 )
  83
  [end of setup.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/setup.py b/setup.py
  --- a/setup.py
  +++ b/setup.py
  @@ -1,6 +1,11 @@
   #!/usr/bin/env python
   
   from setuptools import setup, find_packages
  +from os import path
  +
  +this_directory = path.abspath(path.dirname(__file__))
  +with open(path.join(this_directory, 'README.md'), encoding='utf-8') as readme_md:
  +    long_description = readme_md.read()
   
   extras_require = {
       'tensorflow': [
  @@ -46,6 +51,7 @@
           'ipython<7',  # jupyter_console and ipython clash in dependency requirement -- downgrade ipython for now
           'pre-commit',
           'black;python_version>="3.6"',  # Black is Python3 only
  +        'twine',
       ],
   }
   extras_require['complete'] = sorted(set(sum(extras_require.values(), [])))
  @@ -54,6 +60,8 @@
       name='pyhf',
       version='0.0.15',
       description='(partial) pure python histfactory implementation',
  +    long_description=long_description,
  +    long_description_content_type='text/markdown',
       url='https://github.com/diana-hep/pyhf',
       author='Lukas Heinrich',
       author_email='lukas.heinrich@cern.ch',
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -1,6 +1,11 @@\n #!/usr/bin/env python\n \n from setuptools import setup, find_packages\n+from os import path\n+\n+this_directory = path.abspath(path.dirname(__file__))\n+with open(path.join(this_directory, 'README.md'), encoding='utf-8') as readme_md:\n+    long_description = readme_md.read()\n \n extras_require = {\n     'tensorflow': [\n@@ -46,6 +51,7 @@\n         'ipython<7',  # jupyter_console and ipython clash in dependency requirement -- downgrade ipython for now\n         'pre-commit',\n         'black;python_version>=\"3.6\"',  # Black is Python3 only\n+        'twine',\n     ],\n }\n extras_require['complete'] = sorted(set(sum(extras_require.values(), [])))\n@@ -54,6 +60,8 @@\n     name='pyhf',\n     version='0.0.15',\n     description='(partial) pure python histfactory implementation',\n+    long_description=long_description,\n+    long_description_content_type='text/markdown',\n     url='https://github.com/diana-hep/pyhf',\n     author='Lukas Heinrich',\n     author_email='lukas.heinrich@cern.ch',\n", "issue": "Add README to PyPI\n# Description\r\n\r\nAt the moment we have no README for the [PyPI page](https://pypi.org/project/pyhf/0.0.15/). The addition of one would be a nice touch (even though I assume that most users will discover the project through GitHub).\n", "before_files": [{"content": "#!/usr/bin/env python\n\nfrom setuptools import setup, find_packages\n\nextras_require = {\n    'tensorflow': [\n        'tensorflow>=1.10.0',\n        'tensorflow-probability==0.3.0',\n        'numpy<=1.14.5,>=1.14.0',  # Lower of 1.14.0 instead of 1.13.3 to ensure doctest pass\n        'setuptools<=39.1.0',\n    ],\n    'torch': ['torch>=0.4.0'],\n    'mxnet': [\n        'mxnet>=1.0.0',\n        'requests<2.19.0,>=2.18.4',\n        'numpy<1.15.0,>=1.8.2',\n        'requests<2.19.0,>=2.18.4',\n    ],\n    # 'dask': [\n    #     'dask[array]'\n    # ],\n    'xmlimport': ['uproot'],\n    'minuit': ['iminuit'],\n    'develop': [\n        'pyflakes',\n        'pytest>=3.5.1',\n        'pytest-cov>=2.5.1',\n        'pytest-benchmark[histogram]',\n        'pytest-console-scripts',\n        'python-coveralls',\n        'coverage>=4.0',  # coveralls\n        'matplotlib',\n        'jupyter',\n        'nbdime',\n        'uproot>=3.0.0',\n        'papermill',\n        'graphviz',\n        'bumpversion',\n        'sphinx',\n        'sphinxcontrib-bibtex',\n        'sphinxcontrib-napoleon',\n        'sphinx_rtd_theme',\n        'nbsphinx',\n        'm2r',\n        'jsonpatch',\n        'ipython<7',  # jupyter_console and ipython clash in dependency requirement -- downgrade ipython for now\n        'pre-commit',\n        'black;python_version>=\"3.6\"',  # Black is Python3 only\n    ],\n}\nextras_require['complete'] = sorted(set(sum(extras_require.values(), [])))\n\nsetup(\n    name='pyhf',\n    version='0.0.15',\n    description='(partial) pure python histfactory implementation',\n    url='https://github.com/diana-hep/pyhf',\n    author='Lukas Heinrich',\n    author_email='lukas.heinrich@cern.ch',\n    license='Apache',\n    keywords='physics fitting numpy scipy tensorflow pytorch mxnet dask',\n    classifiers=[\n        \"Programming Language :: Python :: 2\",\n        \"Programming Language :: Python :: 2.7\",\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.6\",\n    ],\n    packages=find_packages(),\n    include_package_data=True,\n    python_requires=\">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*\",\n    install_requires=[\n        'scipy',  # requires numpy, which is required by pyhf, tensorflow, and mxnet\n        'click>=6.0',  # for console scripts,\n        'tqdm',  # for readxml\n        'six',  # for modifiers\n        'jsonschema>=v3.0.0a2',  # for utils, alpha-release for draft 6\n        'jsonpatch',\n    ],\n    extras_require=extras_require,\n    entry_points={'console_scripts': ['pyhf=pyhf.commandline:pyhf']},\n    dependency_links=[],\n)\n", "path": "setup.py"}]}