prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Dependencies missing
  Hi,
  
  I think that the holoviews pip package does not correctly state its dependencies. These are packages that holoviews complained about not finding when I tried importing it:
  - jinja2 
  - nbformat 
  - nbconvert 
  - matplotlib
  
  After installing them manually via pip, I can import holoviews fine.
  
  
  </issue>
  <code>
  [start of setup.py]
  1 #!/usr/bin/env python
  2 
  3 import sys, os
  4 try:
  5     from setuptools import setup
  6 except ImportError:
  7     from distutils.core import setup
  8 
  9 
  10 setup_args = {}
  11 install_requires = ['param>=1.3.2', 'numpy>=1.0']
  12 extras_require={}
  13 
  14 # Notebook dependencies of IPython 3
  15 extras_require['notebook-dependencies'] = ['ipython', 'pyzmq', 'jinja2', 'tornado',
  16                                            'jsonschema',  'ipython', 'pygments']
  17 # IPython Notebook + matplotlib + Lancet
  18 extras_require['recommended'] = (extras_require['notebook-dependencies']
  19                                  + ['matplotlib', 'lancet-ioam'])
  20 # Additional, useful third-party packages
  21 extras_require['extras'] = (['pandas', 'seaborn', 'mpld3', 'bokeh']
  22                             + extras_require['recommended'])
  23 # Everything including cyordereddict (optimization) and nosetests
  24 extras_require['all'] = (extras_require['recommended']
  25                          + extras_require['extras']
  26                          + ['cyordereddict', 'nose'])
  27 
  28 setup_args.update(dict(
  29     name='holoviews',
  30     version="1.4.3",
  31     install_requires = install_requires,
  32     extras_require = extras_require,
  33     description='Stop plotting your data - annotate your data and let it visualize itself.',
  34     long_description=open('README.rst').read() if os.path.isfile('README.rst') else 'Consult README.rst',
  35     author= "Jean-Luc Stevens and Philipp Rudiger",
  36     author_email= "holoviews@gmail.com",
  37     maintainer= "IOAM",
  38     maintainer_email= "holoviews@gmail.com",
  39     platforms=['Windows', 'Mac OS X', 'Linux'],
  40     license='BSD',
  41     url='http://ioam.github.com/holoviews/',
  42     packages = ["holoviews",
  43                 "holoviews.core",
  44                 "holoviews.core.data",
  45                 "holoviews.element",
  46                 "holoviews.interface",
  47                 "holoviews.ipython",
  48                 "holoviews.operation",
  49                 "holoviews.plotting",
  50                 "holoviews.plotting.mpl",
  51                 "holoviews.plotting.bokeh",
  52                 "holoviews.plotting.widgets"],
  53     package_data={'holoviews.ipython': ['*.html'],
  54                   'holoviews.plotting.mpl': ['*.mplstyle', '*.jinja', '*.js'],
  55                   'holoviews.plotting.bokeh': ['*.js', '*.css'],
  56                   'holoviews.plotting.widgets': ['*.jinja', '*.js', '*.css']},
  57     classifiers = [
  58         "License :: OSI Approved :: BSD License",
  59         "Development Status :: 5 - Production/Stable",
  60         "Programming Language :: Python :: 2.7",
  61         "Programming Language :: Python :: 3.3",
  62         "Programming Language :: Python :: 3.4",
  63         "Operating System :: OS Independent",
  64         "Intended Audience :: Science/Research",
  65         "Intended Audience :: Developers",
  66         "Natural Language :: English",
  67         "Topic :: Scientific/Engineering",
  68         "Topic :: Software Development :: Libraries"]
  69 ))
  70 
  71 def check_pseudo_package(path):
  72     """
  73     Verifies that a fake subpackage path for assets (notebooks, svgs,
  74     pngs etc) both exists and is populated with files.
  75     """
  76     if not os.path.isdir(path):
  77         raise Exception("Please make sure pseudo-package %s exists." % path)
  78     else:
  79         assets = os.listdir(path)
  80         if len(assets) == 0:
  81             raise Exception("Please make sure pseudo-package %s is populated." % path)
  82 
  83 
  84 if __name__=="__main__":
  85 
  86     if 'HOLOVIEWS_RELEASE' in os.environ:
  87         # Make sure to create these directories and populate them before upload
  88         setup_args['packages'] += ["holoviews.assets", 'holoviews.notebooks']
  89 
  90         # Add unit tests
  91         setup_args['packages'].append('holoviews.tests')
  92 
  93         setup_args['package_data']['holoviews.assets'] = ['*.png', '*.svg', '*.rst']
  94         setup_args['package_data']['holoviews.notebooks'] = ['*.ipynb', '*.npy']
  95 
  96         if ('upload' in sys.argv) or ('sdist' in sys.argv):
  97             check_pseudo_package(os.path.join('.', 'holoviews', 'tests'))
  98             check_pseudo_package(os.path.join('.', 'holoviews', 'assets'))
  99             check_pseudo_package(os.path.join('.', 'holoviews', 'notebooks'))
  100 
  101             import holoviews
  102             holoviews.__version__.verify(setup_args['version'])
  103 
  104     setup(**setup_args)
  105
  [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
  @@ -13,7 +13,7 @@
   
   # Notebook dependencies of IPython 3
   extras_require['notebook-dependencies'] = ['ipython', 'pyzmq', 'jinja2', 'tornado',
  -                                           'jsonschema',  'ipython', 'pygments']
  +                                           'jsonschema',  'notebook', 'pygments']
   # IPython Notebook + matplotlib + Lancet
   extras_require['recommended'] = (extras_require['notebook-dependencies']
                                    + ['matplotlib', 'lancet-ioam'])
  @@ -101,4 +101,22 @@
               import holoviews
               holoviews.__version__.verify(setup_args['version'])
   
  +
  +    if 'install' in sys.argv:
  +        header = "HOLOVIEWS INSTALLATION INFORMATION"
  +        bars = "="*len(header)
  +
  +        extras = '\n'.join('holoviews[%s]' % e for e in setup_args['extras_require'])
  +
  +        print("%s\n%s\n%s" % (bars, header, bars))
  +
  +        print("\nHoloViews supports the following installation types:\n")
  +        print("%s\n" % extras)
  +        print("Users should consider using one of these options.\n")
  +        print("By default only a core installation is performed and ")
  +        print("only the minimal set of dependencies are fetched.\n\n")
  +        print("For more information please visit http://holoviews.org/install.html\n")
  +        print(bars+'\n')
  +
  +
       setup(**setup_args)
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -13,7 +13,7 @@\n \n # Notebook dependencies of IPython 3\n extras_require['notebook-dependencies'] = ['ipython', 'pyzmq', 'jinja2', 'tornado',\n-                                           'jsonschema',  'ipython', 'pygments']\n+                                           'jsonschema',  'notebook', 'pygments']\n # IPython Notebook + matplotlib + Lancet\n extras_require['recommended'] = (extras_require['notebook-dependencies']\n                                  + ['matplotlib', 'lancet-ioam'])\n@@ -101,4 +101,22 @@\n             import holoviews\n             holoviews.__version__.verify(setup_args['version'])\n \n+\n+    if 'install' in sys.argv:\n+        header = \"HOLOVIEWS INSTALLATION INFORMATION\"\n+        bars = \"=\"*len(header)\n+\n+        extras = '\\n'.join('holoviews[%s]' % e for e in setup_args['extras_require'])\n+\n+        print(\"%s\\n%s\\n%s\" % (bars, header, bars))\n+\n+        print(\"\\nHoloViews supports the following installation types:\\n\")\n+        print(\"%s\\n\" % extras)\n+        print(\"Users should consider using one of these options.\\n\")\n+        print(\"By default only a core installation is performed and \")\n+        print(\"only the minimal set of dependencies are fetched.\\n\\n\")\n+        print(\"For more information please visit http://holoviews.org/install.html\\n\")\n+        print(bars+'\\n')\n+\n+\n     setup(**setup_args)\n", "issue": "Dependencies missing\nHi,\n\nI think that the holoviews pip package does not correctly state its dependencies. These are packages that holoviews complained about not finding when I tried importing it:\n- jinja2 \n- nbformat \n- nbconvert \n- matplotlib\n\nAfter installing them manually via pip, I can import holoviews fine.\n\n", "before_files": [{"content": "#!/usr/bin/env python\n\nimport sys, os\ntry:\n    from setuptools import setup\nexcept ImportError:\n    from distutils.core import setup\n\n\nsetup_args = {}\ninstall_requires = ['param>=1.3.2', 'numpy>=1.0']\nextras_require={}\n\n# Notebook dependencies of IPython 3\nextras_require['notebook-dependencies'] = ['ipython', 'pyzmq', 'jinja2', 'tornado',\n                                           'jsonschema',  'ipython', 'pygments']\n# IPython Notebook + matplotlib + Lancet\nextras_require['recommended'] = (extras_require['notebook-dependencies']\n                                 + ['matplotlib', 'lancet-ioam'])\n# Additional, useful third-party packages\nextras_require['extras'] = (['pandas', 'seaborn', 'mpld3', 'bokeh']\n                            + extras_require['recommended'])\n# Everything including cyordereddict (optimization) and nosetests\nextras_require['all'] = (extras_require['recommended']\n                         + extras_require['extras']\n                         + ['cyordereddict', 'nose'])\n\nsetup_args.update(dict(\n    name='holoviews',\n    version=\"1.4.3\",\n    install_requires = install_requires,\n    extras_require = extras_require,\n    description='Stop plotting your data - annotate your data and let it visualize itself.',\n    long_description=open('README.rst').read() if os.path.isfile('README.rst') else 'Consult README.rst',\n    author= \"Jean-Luc Stevens and Philipp Rudiger\",\n    author_email= \"holoviews@gmail.com\",\n    maintainer= \"IOAM\",\n    maintainer_email= \"holoviews@gmail.com\",\n    platforms=['Windows', 'Mac OS X', 'Linux'],\n    license='BSD',\n    url='http://ioam.github.com/holoviews/',\n    packages = [\"holoviews\",\n                \"holoviews.core\",\n                \"holoviews.core.data\",\n                \"holoviews.element\",\n                \"holoviews.interface\",\n                \"holoviews.ipython\",\n                \"holoviews.operation\",\n                \"holoviews.plotting\",\n                \"holoviews.plotting.mpl\",\n                \"holoviews.plotting.bokeh\",\n                \"holoviews.plotting.widgets\"],\n    package_data={'holoviews.ipython': ['*.html'],\n                  'holoviews.plotting.mpl': ['*.mplstyle', '*.jinja', '*.js'],\n                  'holoviews.plotting.bokeh': ['*.js', '*.css'],\n                  'holoviews.plotting.widgets': ['*.jinja', '*.js', '*.css']},\n    classifiers = [\n        \"License :: OSI Approved :: BSD License\",\n        \"Development Status :: 5 - Production/Stable\",\n        \"Programming Language :: Python :: 2.7\",\n        \"Programming Language :: Python :: 3.3\",\n        \"Programming Language :: Python :: 3.4\",\n        \"Operating System :: OS Independent\",\n        \"Intended Audience :: Science/Research\",\n        \"Intended Audience :: Developers\",\n        \"Natural Language :: English\",\n        \"Topic :: Scientific/Engineering\",\n        \"Topic :: Software Development :: Libraries\"]\n))\n\ndef check_pseudo_package(path):\n    \"\"\"\n    Verifies that a fake subpackage path for assets (notebooks, svgs,\n    pngs etc) both exists and is populated with files.\n    \"\"\"\n    if not os.path.isdir(path):\n        raise Exception(\"Please make sure pseudo-package %s exists.\" % path)\n    else:\n        assets = os.listdir(path)\n        if len(assets) == 0:\n            raise Exception(\"Please make sure pseudo-package %s is populated.\" % path)\n\n\nif __name__==\"__main__\":\n\n    if 'HOLOVIEWS_RELEASE' in os.environ:\n        # Make sure to create these directories and populate them before upload\n        setup_args['packages'] += [\"holoviews.assets\", 'holoviews.notebooks']\n\n        # Add unit tests\n        setup_args['packages'].append('holoviews.tests')\n\n        setup_args['package_data']['holoviews.assets'] = ['*.png', '*.svg', '*.rst']\n        setup_args['package_data']['holoviews.notebooks'] = ['*.ipynb', '*.npy']\n\n        if ('upload' in sys.argv) or ('sdist' in sys.argv):\n            check_pseudo_package(os.path.join('.', 'holoviews', 'tests'))\n            check_pseudo_package(os.path.join('.', 'holoviews', 'assets'))\n            check_pseudo_package(os.path.join('.', 'holoviews', 'notebooks'))\n\n            import holoviews\n            holoviews.__version__.verify(setup_args['version'])\n\n    setup(**setup_args)\n", "path": "setup.py"}]}