We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
docs build fails with numpydoc 0.7.0
## Description

If you just pip install numpydoc today and run 'make html' in doc you get:

```
reading sources... [  2%] api/skimage.data                                                                                                       
Exception occurred:
  File "/opt/opensource/deb/py36/venv3/lib/python3.5/site-packages/numpydoc/docscrape.py", line 343, in _parse
    raise ValueError(msg)
ValueError: The section Other Parameters appears twice in the docstring of None in None.
```

Installing numpydoc 0.6.0 gets past this problem.

I have no idea if this is a numpydoc or scikit-image bug really...


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `skimage/io/_io.py`
Content:
```
1 from io import BytesIO
2 
3 import numpy as np
4 import six
5 
6 from ..io.manage_plugins import call_plugin
7 from ..color import rgb2grey
8 from .util import file_or_url_context
9 from ..exposure import is_low_contrast
10 from .._shared.utils import all_warnings, warn
11 
12 
13 __all__ = ['imread', 'imsave', 'imshow', 'show',
14            'imread_collection', 'imshow_collection']
15 
16 
17 def imread(fname, as_grey=False, plugin=None, flatten=None,
18            **plugin_args):
19     """Load an image from file.
20 
21     Parameters
22     ----------
23     fname : string
24         Image file name, e.g. ``test.jpg`` or URL.
25     as_grey : bool
26         If True, convert color images to grey-scale (64-bit floats).
27         Images that are already in grey-scale format are not converted.
28     plugin : str
29         Name of plugin to use.  By default, the different plugins are
30         tried (starting with the Python Imaging Library) until a suitable
31         candidate is found.  If not given and fname is a tiff file, the
32         tifffile plugin will be used.
33 
34     Other Parameters
35     ----------------
36     flatten : bool
37         Backward compatible keyword, superseded by `as_grey`.
38 
39     Returns
40     -------
41     img_array : ndarray
42         The different color bands/channels are stored in the
43         third dimension, such that a grey-image is MxN, an
44         RGB-image MxNx3 and an RGBA-image MxNx4.
45 
46     Other parameters
47     ----------------
48     plugin_args : keywords
49         Passed to the given plugin.
50 
51     """
52     # Backward compatibility
53     if flatten is not None:
54         as_grey = flatten
55 
56     if plugin is None and hasattr(fname, 'lower'):
57         if fname.lower().endswith(('.tiff', '.tif')):
58             plugin = 'tifffile'
59 
60     with file_or_url_context(fname) as fname:
61         img = call_plugin('imread', fname, plugin=plugin, **plugin_args)
62 
63     if not hasattr(img, 'ndim'):
64         return img
65 
66     if img.ndim > 2:
67         if img.shape[-1] not in (3, 4) and img.shape[-3] in (3, 4):
68             img = np.swapaxes(img, -1, -3)
69             img = np.swapaxes(img, -2, -3)
70 
71         if as_grey:
72             img = rgb2grey(img)
73 
74     return img
75 
76 
77 def imread_collection(load_pattern, conserve_memory=True,
78                       plugin=None, **plugin_args):
79     """
80     Load a collection of images.
81 
82     Parameters
83     ----------
84     load_pattern : str or list
85         List of objects to load. These are usually filenames, but may
86         vary depending on the currently active plugin.  See the docstring
87         for ``ImageCollection`` for the default behaviour of this parameter.
88     conserve_memory : bool, optional
89         If True, never keep more than one in memory at a specific
90         time.  Otherwise, images will be cached once they are loaded.
91 
92     Returns
93     -------
94     ic : ImageCollection
95         Collection of images.
96 
97     Other parameters
98     ----------------
99     plugin_args : keywords
100         Passed to the given plugin.
101 
102     """
103     return call_plugin('imread_collection', load_pattern, conserve_memory,
104                        plugin=plugin, **plugin_args)
105 
106 
107 def imsave(fname, arr, plugin=None, **plugin_args):
108     """Save an image to file.
109 
110     Parameters
111     ----------
112     fname : str
113         Target filename.
114     arr : ndarray of shape (M,N) or (M,N,3) or (M,N,4)
115         Image data.
116     plugin : str
117         Name of plugin to use.  By default, the different plugins are
118         tried (starting with the Python Imaging Library) until a suitable
119         candidate is found.  If not given and fname is a tiff file, the
120         tifffile plugin will be used.
121 
122     Other parameters
123     ----------------
124     plugin_args : keywords
125         Passed to the given plugin.
126 
127     Notes
128     -----
129     When saving a JPEG, the compression ratio may be controlled using the
130     ``quality`` keyword argument which is an integer with values in [1, 100]
131     where 1 is worst quality and smallest file size, and 100 is best quality and
132     largest file size (default 75).  This is only available when using the PIL
133     and imageio plugins.
134     """
135     if plugin is None and hasattr(fname, 'lower'):
136         if fname.lower().endswith(('.tiff', '.tif')):
137             plugin = 'tifffile'
138     if is_low_contrast(arr):
139         warn('%s is a low contrast image' % fname)
140     return call_plugin('imsave', fname, arr, plugin=plugin, **plugin_args)
141 
142 
143 def imshow(arr, plugin=None, **plugin_args):
144     """Display an image.
145 
146     Parameters
147     ----------
148     arr : ndarray or str
149         Image data or name of image file.
150     plugin : str
151         Name of plugin to use.  By default, the different plugins are
152         tried (starting with the Python Imaging Library) until a suitable
153         candidate is found.
154 
155     Other parameters
156     ----------------
157     plugin_args : keywords
158         Passed to the given plugin.
159 
160     """
161     if isinstance(arr, six.string_types):
162         arr = call_plugin('imread', arr, plugin=plugin)
163     return call_plugin('imshow', arr, plugin=plugin, **plugin_args)
164 
165 
166 def imshow_collection(ic, plugin=None, **plugin_args):
167     """Display a collection of images.
168 
169     Parameters
170     ----------
171     ic : ImageCollection
172         Collection to display.
173     plugin : str
174         Name of plugin to use.  By default, the different plugins are
175         tried until a suitable candidate is found.
176 
177     Other parameters
178     ----------------
179     plugin_args : keywords
180         Passed to the given plugin.
181 
182     """
183     return call_plugin('imshow_collection', ic, plugin=plugin, **plugin_args)
184 
185 
186 def show():
187     '''Display pending images.
188 
189     Launch the event loop of the current gui plugin, and display all
190     pending images, queued via `imshow`. This is required when using
191     `imshow` from non-interactive scripts.
192 
193     A call to `show` will block execution of code until all windows
194     have been closed.
195 
196     Examples
197     --------
198     >>> import skimage.io as io
199 
200     >>> for i in range(4):
201     ...     ax_im = io.imshow(np.random.rand(50, 50))
202     >>> io.show() # doctest: +SKIP
203 
204     '''
205     return call_plugin('_app_show')
206
```
--- 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()

```

diff --git a/skimage/io/_io.py b/skimage/io/_io.py
--- a/skimage/io/_io.py
+++ b/skimage/io/_io.py
@@ -36,6 +36,9 @@
     flatten : bool
         Backward compatible keyword, superseded by `as_grey`.
 
+    plugin_args : keywords
+        Passed to the given plugin.
+
     Returns
     -------
     img_array : ndarray
@@ -43,11 +46,6 @@
         third dimension, such that a grey-image is MxN, an
         RGB-image MxNx3 and an RGBA-image MxNx4.
 
-    Other parameters
-    ----------------
-    plugin_args : keywords
-        Passed to the given plugin.
-
     """
     # Backward compatibility
     if flatten is not None:

{"golden_diff": "diff --git a/skimage/io/_io.py b/skimage/io/_io.py\n--- a/skimage/io/_io.py\n+++ b/skimage/io/_io.py\n@@ -36,6 +36,9 @@\n     flatten : bool\n         Backward compatible keyword, superseded by `as_grey`.\n \n+    plugin_args : keywords\n+        Passed to the given plugin.\n+\n     Returns\n     -------\n     img_array : ndarray\n@@ -43,11 +46,6 @@\n         third dimension, such that a grey-image is MxN, an\n         RGB-image MxNx3 and an RGBA-image MxNx4.\n \n-    Other parameters\n-    ----------------\n-    plugin_args : keywords\n-        Passed to the given plugin.\n-\n     \"\"\"\n     # Backward compatibility\n     if flatten is not None:\n", "issue": "docs build fails with numpydoc 0.7.0\n## Description\r\n\r\nIf you just pip install numpydoc today and run 'make html' in doc you get:\r\n\r\n```\r\nreading sources... [  2%] api/skimage.data                                                                                                       \r\nException occurred:\r\n  File \"/opt/opensource/deb/py36/venv3/lib/python3.5/site-packages/numpydoc/docscrape.py\", line 343, in _parse\r\n    raise ValueError(msg)\r\nValueError: The section Other Parameters appears twice in the docstring of None in None.\r\n```\r\n\r\nInstalling numpydoc 0.6.0 gets past this problem.\r\n\r\nI have no idea if this is a numpydoc or scikit-image bug really...\r\n\n", "before_files": [{"content": "from io import BytesIO\n\nimport numpy as np\nimport six\n\nfrom ..io.manage_plugins import call_plugin\nfrom ..color import rgb2grey\nfrom .util import file_or_url_context\nfrom ..exposure import is_low_contrast\nfrom .._shared.utils import all_warnings, warn\n\n\n__all__ = ['imread', 'imsave', 'imshow', 'show',\n           'imread_collection', 'imshow_collection']\n\n\ndef imread(fname, as_grey=False, plugin=None, flatten=None,\n           **plugin_args):\n    \"\"\"Load an image from file.\n\n    Parameters\n    ----------\n    fname : string\n        Image file name, e.g. ``test.jpg`` or URL.\n    as_grey : bool\n        If True, convert color images to grey-scale (64-bit floats).\n        Images that are already in grey-scale format are not converted.\n    plugin : str\n        Name of plugin to use.  By default, the different plugins are\n        tried (starting with the Python Imaging Library) until a suitable\n        candidate is found.  If not given and fname is a tiff file, the\n        tifffile plugin will be used.\n\n    Other Parameters\n    ----------------\n    flatten : bool\n        Backward compatible keyword, superseded by `as_grey`.\n\n    Returns\n    -------\n    img_array : ndarray\n        The different color bands/channels are stored in the\n        third dimension, such that a grey-image is MxN, an\n        RGB-image MxNx3 and an RGBA-image MxNx4.\n\n    Other parameters\n    ----------------\n    plugin_args : keywords\n        Passed to the given plugin.\n\n    \"\"\"\n    # Backward compatibility\n    if flatten is not None:\n        as_grey = flatten\n\n    if plugin is None and hasattr(fname, 'lower'):\n        if fname.lower().endswith(('.tiff', '.tif')):\n            plugin = 'tifffile'\n\n    with file_or_url_context(fname) as fname:\n        img = call_plugin('imread', fname, plugin=plugin, **plugin_args)\n\n    if not hasattr(img, 'ndim'):\n        return img\n\n    if img.ndim > 2:\n        if img.shape[-1] not in (3, 4) and img.shape[-3] in (3, 4):\n            img = np.swapaxes(img, -1, -3)\n            img = np.swapaxes(img, -2, -3)\n\n        if as_grey:\n            img = rgb2grey(img)\n\n    return img\n\n\ndef imread_collection(load_pattern, conserve_memory=True,\n                      plugin=None, **plugin_args):\n    \"\"\"\n    Load a collection of images.\n\n    Parameters\n    ----------\n    load_pattern : str or list\n        List of objects to load. These are usually filenames, but may\n        vary depending on the currently active plugin.  See the docstring\n        for ``ImageCollection`` for the default behaviour of this parameter.\n    conserve_memory : bool, optional\n        If True, never keep more than one in memory at a specific\n        time.  Otherwise, images will be cached once they are loaded.\n\n    Returns\n    -------\n    ic : ImageCollection\n        Collection of images.\n\n    Other parameters\n    ----------------\n    plugin_args : keywords\n        Passed to the given plugin.\n\n    \"\"\"\n    return call_plugin('imread_collection', load_pattern, conserve_memory,\n                       plugin=plugin, **plugin_args)\n\n\ndef imsave(fname, arr, plugin=None, **plugin_args):\n    \"\"\"Save an image to file.\n\n    Parameters\n    ----------\n    fname : str\n        Target filename.\n    arr : ndarray of shape (M,N) or (M,N,3) or (M,N,4)\n        Image data.\n    plugin : str\n        Name of plugin to use.  By default, the different plugins are\n        tried (starting with the Python Imaging Library) until a suitable\n        candidate is found.  If not given and fname is a tiff file, the\n        tifffile plugin will be used.\n\n    Other parameters\n    ----------------\n    plugin_args : keywords\n        Passed to the given plugin.\n\n    Notes\n    -----\n    When saving a JPEG, the compression ratio may be controlled using the\n    ``quality`` keyword argument which is an integer with values in [1, 100]\n    where 1 is worst quality and smallest file size, and 100 is best quality and\n    largest file size (default 75).  This is only available when using the PIL\n    and imageio plugins.\n    \"\"\"\n    if plugin is None and hasattr(fname, 'lower'):\n        if fname.lower().endswith(('.tiff', '.tif')):\n            plugin = 'tifffile'\n    if is_low_contrast(arr):\n        warn('%s is a low contrast image' % fname)\n    return call_plugin('imsave', fname, arr, plugin=plugin, **plugin_args)\n\n\ndef imshow(arr, plugin=None, **plugin_args):\n    \"\"\"Display an image.\n\n    Parameters\n    ----------\n    arr : ndarray or str\n        Image data or name of image file.\n    plugin : str\n        Name of plugin to use.  By default, the different plugins are\n        tried (starting with the Python Imaging Library) until a suitable\n        candidate is found.\n\n    Other parameters\n    ----------------\n    plugin_args : keywords\n        Passed to the given plugin.\n\n    \"\"\"\n    if isinstance(arr, six.string_types):\n        arr = call_plugin('imread', arr, plugin=plugin)\n    return call_plugin('imshow', arr, plugin=plugin, **plugin_args)\n\n\ndef imshow_collection(ic, plugin=None, **plugin_args):\n    \"\"\"Display a collection of images.\n\n    Parameters\n    ----------\n    ic : ImageCollection\n        Collection to display.\n    plugin : str\n        Name of plugin to use.  By default, the different plugins are\n        tried until a suitable candidate is found.\n\n    Other parameters\n    ----------------\n    plugin_args : keywords\n        Passed to the given plugin.\n\n    \"\"\"\n    return call_plugin('imshow_collection', ic, plugin=plugin, **plugin_args)\n\n\ndef show():\n    '''Display pending images.\n\n    Launch the event loop of the current gui plugin, and display all\n    pending images, queued via `imshow`. This is required when using\n    `imshow` from non-interactive scripts.\n\n    A call to `show` will block execution of code until all windows\n    have been closed.\n\n    Examples\n    --------\n    >>> import skimage.io as io\n\n    >>> for i in range(4):\n    ...     ax_im = io.imshow(np.random.rand(50, 50))\n    >>> io.show() # doctest: +SKIP\n\n    '''\n    return call_plugin('_app_show')\n", "path": "skimage/io/_io.py"}], "after_files": [{"content": "from io import BytesIO\n\nimport numpy as np\nimport six\n\nfrom ..io.manage_plugins import call_plugin\nfrom ..color import rgb2grey\nfrom .util import file_or_url_context\nfrom ..exposure import is_low_contrast\nfrom .._shared.utils import all_warnings, warn\n\n\n__all__ = ['imread', 'imsave', 'imshow', 'show',\n           'imread_collection', 'imshow_collection']\n\n\ndef imread(fname, as_grey=False, plugin=None, flatten=None,\n           **plugin_args):\n    \"\"\"Load an image from file.\n\n    Parameters\n    ----------\n    fname : string\n        Image file name, e.g. ``test.jpg`` or URL.\n    as_grey : bool\n        If True, convert color images to grey-scale (64-bit floats).\n        Images that are already in grey-scale format are not converted.\n    plugin : str\n        Name of plugin to use.  By default, the different plugins are\n        tried (starting with the Python Imaging Library) until a suitable\n        candidate is found.  If not given and fname is a tiff file, the\n        tifffile plugin will be used.\n\n    Other Parameters\n    ----------------\n    flatten : bool\n        Backward compatible keyword, superseded by `as_grey`.\n\n    plugin_args : keywords\n        Passed to the given plugin.\n\n    Returns\n    -------\n    img_array : ndarray\n        The different color bands/channels are stored in the\n        third dimension, such that a grey-image is MxN, an\n        RGB-image MxNx3 and an RGBA-image MxNx4.\n\n    \"\"\"\n    # Backward compatibility\n    if flatten is not None:\n        as_grey = flatten\n\n    if plugin is None and hasattr(fname, 'lower'):\n        if fname.lower().endswith(('.tiff', '.tif')):\n            plugin = 'tifffile'\n\n    with file_or_url_context(fname) as fname:\n        img = call_plugin('imread', fname, plugin=plugin, **plugin_args)\n\n    if not hasattr(img, 'ndim'):\n        return img\n\n    if img.ndim > 2:\n        if img.shape[-1] not in (3, 4) and img.shape[-3] in (3, 4):\n            img = np.swapaxes(img, -1, -3)\n            img = np.swapaxes(img, -2, -3)\n\n        if as_grey:\n            img = rgb2grey(img)\n\n    return img\n\n\ndef imread_collection(load_pattern, conserve_memory=True,\n                      plugin=None, **plugin_args):\n    \"\"\"\n    Load a collection of images.\n\n    Parameters\n    ----------\n    load_pattern : str or list\n        List of objects to load. These are usually filenames, but may\n        vary depending on the currently active plugin.  See the docstring\n        for ``ImageCollection`` for the default behaviour of this parameter.\n    conserve_memory : bool, optional\n        If True, never keep more than one in memory at a specific\n        time.  Otherwise, images will be cached once they are loaded.\n\n    Returns\n    -------\n    ic : ImageCollection\n        Collection of images.\n\n    Other parameters\n    ----------------\n    plugin_args : keywords\n        Passed to the given plugin.\n\n    \"\"\"\n    return call_plugin('imread_collection', load_pattern, conserve_memory,\n                       plugin=plugin, **plugin_args)\n\n\ndef imsave(fname, arr, plugin=None, **plugin_args):\n    \"\"\"Save an image to file.\n\n    Parameters\n    ----------\n    fname : str\n        Target filename.\n    arr : ndarray of shape (M,N) or (M,N,3) or (M,N,4)\n        Image data.\n    plugin : str\n        Name of plugin to use.  By default, the different plugins are\n        tried (starting with the Python Imaging Library) until a suitable\n        candidate is found.  If not given and fname is a tiff file, the\n        tifffile plugin will be used.\n\n    Other parameters\n    ----------------\n    plugin_args : keywords\n        Passed to the given plugin.\n\n    Notes\n    -----\n    When saving a JPEG, the compression ratio may be controlled using the\n    ``quality`` keyword argument which is an integer with values in [1, 100]\n    where 1 is worst quality and smallest file size, and 100 is best quality and\n    largest file size (default 75).  This is only available when using the PIL\n    and imageio plugins.\n    \"\"\"\n    if plugin is None and hasattr(fname, 'lower'):\n        if fname.lower().endswith(('.tiff', '.tif')):\n            plugin = 'tifffile'\n    if is_low_contrast(arr):\n        warn('%s is a low contrast image' % fname)\n    return call_plugin('imsave', fname, arr, plugin=plugin, **plugin_args)\n\n\ndef imshow(arr, plugin=None, **plugin_args):\n    \"\"\"Display an image.\n\n    Parameters\n    ----------\n    arr : ndarray or str\n        Image data or name of image file.\n    plugin : str\n        Name of plugin to use.  By default, the different plugins are\n        tried (starting with the Python Imaging Library) until a suitable\n        candidate is found.\n\n    Other parameters\n    ----------------\n    plugin_args : keywords\n        Passed to the given plugin.\n\n    \"\"\"\n    if isinstance(arr, six.string_types):\n        arr = call_plugin('imread', arr, plugin=plugin)\n    return call_plugin('imshow', arr, plugin=plugin, **plugin_args)\n\n\ndef imshow_collection(ic, plugin=None, **plugin_args):\n    \"\"\"Display a collection of images.\n\n    Parameters\n    ----------\n    ic : ImageCollection\n        Collection to display.\n    plugin : str\n        Name of plugin to use.  By default, the different plugins are\n        tried until a suitable candidate is found.\n\n    Other parameters\n    ----------------\n    plugin_args : keywords\n        Passed to the given plugin.\n\n    \"\"\"\n    return call_plugin('imshow_collection', ic, plugin=plugin, **plugin_args)\n\n\ndef show():\n    '''Display pending images.\n\n    Launch the event loop of the current gui plugin, and display all\n    pending images, queued via `imshow`. This is required when using\n    `imshow` from non-interactive scripts.\n\n    A call to `show` will block execution of code until all windows\n    have been closed.\n\n    Examples\n    --------\n    >>> import skimage.io as io\n\n    >>> for i in range(4):\n    ...     ax_im = io.imshow(np.random.rand(50, 50))\n    >>> io.show() # doctest: +SKIP\n\n    '''\n    return call_plugin('_app_show')\n", "path": "skimage/io/_io.py"}]}