prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Deprecate and remove `skimage.novice`
  `skimage.novice` was built by and for Software Carpentry.  I've recently learned that it is no longer being used, so I don't see much use for it remaining in the package.
  
  If someone feels excited about turning it into a new package, please do so.
  
  --- 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/novice/__init__.py`
  Content:
  ```
  1 """
  2 skimage.novice
  3 ==============
  4 A special Python image submodule for beginners.
  5 
  6 Description
  7 -----------
  8 ``skimage.novice`` provides a simple image manipulation interface for
  9 beginners.  It allows for easy loading, manipulating, and saving of image
  10 files.
  11 
  12 This module is primarily intended for teaching and differs significantly from
  13 the normal, array-oriented image functions used by scikit-image.
  14 
  15 .. note::
  16 
  17     This module uses the Cartesian coordinate system, where the origin is at
  18     the lower-left corner instead of the upper-right and the order is x, y
  19     instead of row, column.
  20 
  21 
  22 Examples
  23 --------
  24 We can create a Picture object open opening an image file:
  25 
  26 >>> from skimage import novice
  27 >>> from skimage import data
  28 >>> picture = novice.open(data.data_dir + '/chelsea.png')
  29 
  30 We can display pictures (after running this command, close the window to access the prompt again):
  31 
  32 >>> picture.show()  # doctest: +SKIP
  33 
  34 Pictures know their format:
  35 
  36 >>> picture.format
  37 'png'
  38 
  39 ... and where they came from:
  40 
  41 >>> picture.path.endswith('chelsea.png')
  42 True
  43 
  44 ... and their size:
  45 
  46 >>> picture.size
  47 (451, 300)
  48 >>> picture.width
  49 451
  50 
  51 As a reminder, we can preview the picture with our earlier command:
  52 
  53 >>> picture.show()  # doctest: +SKIP
  54 
  55 Changing `size` resizes the picture.
  56 
  57 >>> picture.size = (45, 30)
  58 
  59 We can preview the changes we made to the picture with the ``compare`` command:
  60 
  61 >>> picture.compare()  # doctest: +SKIP
  62 
  63 You can iterate over pixels, which have RGB values between 0 and 255,
  64 and know their location in the picture.
  65 
  66 >>> for pixel in picture:
  67 ...     if (pixel.red > 128) and (pixel.x < picture.width):
  68 ...         pixel.red = pixel.red / 2
  69 
  70 Pictures know if they've been modified from the original file
  71 
  72 >>> picture.modified
  73 True
  74 >>> print(picture.path)
  75 None
  76 
  77 Pictures can be indexed like arrays
  78 
  79 >>> picture[0:20, 0:20] = (0, 0, 0)
  80 
  81 Saving the picture updates the path attribute, format, and modified state.
  82 
  83 >>> picture.save('save-demo.jpg')
  84 >>> picture.path.endswith('save-demo.jpg')
  85 True
  86 >>> picture.format
  87 'jpeg'
  88 >>> picture.modified
  89 False
  90 
  91 An image can also be restored to its original state after modification:
  92 
  93 >>> picture[0:20, 0:20] = (0, 0, 0)
  94 >>> picture.compare()  # doctest: +SKIP
  95 >>> picture.reset()
  96 >>> picture.compare()  # doctest: +SKIP
  97 
  98 """
  99 from ._novice import Picture, open, colors, color_dict
  100 
  101 
  102 __all__ = ['Picture', 'open', 'colors', 'color_dict']
  103
  ```
  --- 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/skimage/novice/__init__.py b/skimage/novice/__init__.py
  --- a/skimage/novice/__init__.py
  +++ b/skimage/novice/__init__.py
  @@ -96,7 +96,11 @@
   >>> picture.compare()  # doctest: +SKIP
   
   """
  +import warnings
   from ._novice import Picture, open, colors, color_dict
   
   
  +warnings.warn("This module was deprecated in version 0.14. "
  +              "It will be removed in 0.16.")
  +
   __all__ = ['Picture', 'open', 'colors', 'color_dict']
  
verification_info: {"golden_diff": "diff --git a/skimage/novice/__init__.py b/skimage/novice/__init__.py\n--- a/skimage/novice/__init__.py\n+++ b/skimage/novice/__init__.py\n@@ -96,7 +96,11 @@\n >>> picture.compare()  # doctest: +SKIP\n \n \"\"\"\n+import warnings\n from ._novice import Picture, open, colors, color_dict\n \n \n+warnings.warn(\"This module was deprecated in version 0.14. \"\n+              \"It will be removed in 0.16.\")\n+\n __all__ = ['Picture', 'open', 'colors', 'color_dict']\n", "issue": "Deprecate and remove `skimage.novice`\n`skimage.novice` was built by and for Software Carpentry.  I've recently learned that it is no longer being used, so I don't see much use for it remaining in the package.\r\n\r\nIf someone feels excited about turning it into a new package, please do so.\n", "before_files": [{"content": "\"\"\"\nskimage.novice\n==============\nA special Python image submodule for beginners.\n\nDescription\n-----------\n``skimage.novice`` provides a simple image manipulation interface for\nbeginners.  It allows for easy loading, manipulating, and saving of image\nfiles.\n\nThis module is primarily intended for teaching and differs significantly from\nthe normal, array-oriented image functions used by scikit-image.\n\n.. note::\n\n    This module uses the Cartesian coordinate system, where the origin is at\n    the lower-left corner instead of the upper-right and the order is x, y\n    instead of row, column.\n\n\nExamples\n--------\nWe can create a Picture object open opening an image file:\n\n>>> from skimage import novice\n>>> from skimage import data\n>>> picture = novice.open(data.data_dir + '/chelsea.png')\n\nWe can display pictures (after running this command, close the window to access the prompt again):\n\n>>> picture.show()  # doctest: +SKIP\n\nPictures know their format:\n\n>>> picture.format\n'png'\n\n... and where they came from:\n\n>>> picture.path.endswith('chelsea.png')\nTrue\n\n... and their size:\n\n>>> picture.size\n(451, 300)\n>>> picture.width\n451\n\nAs a reminder, we can preview the picture with our earlier command:\n\n>>> picture.show()  # doctest: +SKIP\n\nChanging `size` resizes the picture.\n\n>>> picture.size = (45, 30)\n\nWe can preview the changes we made to the picture with the ``compare`` command:\n\n>>> picture.compare()  # doctest: +SKIP\n\nYou can iterate over pixels, which have RGB values between 0 and 255,\nand know their location in the picture.\n\n>>> for pixel in picture:\n...     if (pixel.red > 128) and (pixel.x < picture.width):\n...         pixel.red = pixel.red / 2\n\nPictures know if they've been modified from the original file\n\n>>> picture.modified\nTrue\n>>> print(picture.path)\nNone\n\nPictures can be indexed like arrays\n\n>>> picture[0:20, 0:20] = (0, 0, 0)\n\nSaving the picture updates the path attribute, format, and modified state.\n\n>>> picture.save('save-demo.jpg')\n>>> picture.path.endswith('save-demo.jpg')\nTrue\n>>> picture.format\n'jpeg'\n>>> picture.modified\nFalse\n\nAn image can also be restored to its original state after modification:\n\n>>> picture[0:20, 0:20] = (0, 0, 0)\n>>> picture.compare()  # doctest: +SKIP\n>>> picture.reset()\n>>> picture.compare()  # doctest: +SKIP\n\n\"\"\"\nfrom ._novice import Picture, open, colors, color_dict\n\n\n__all__ = ['Picture', 'open', 'colors', 'color_dict']\n", "path": "skimage/novice/__init__.py"}], "after_files": [{"content": "\"\"\"\nskimage.novice\n==============\nA special Python image submodule for beginners.\n\nDescription\n-----------\n``skimage.novice`` provides a simple image manipulation interface for\nbeginners.  It allows for easy loading, manipulating, and saving of image\nfiles.\n\nThis module is primarily intended for teaching and differs significantly from\nthe normal, array-oriented image functions used by scikit-image.\n\n.. note::\n\n    This module uses the Cartesian coordinate system, where the origin is at\n    the lower-left corner instead of the upper-right and the order is x, y\n    instead of row, column.\n\n\nExamples\n--------\nWe can create a Picture object open opening an image file:\n\n>>> from skimage import novice\n>>> from skimage import data\n>>> picture = novice.open(data.data_dir + '/chelsea.png')\n\nWe can display pictures (after running this command, close the window to access the prompt again):\n\n>>> picture.show()  # doctest: +SKIP\n\nPictures know their format:\n\n>>> picture.format\n'png'\n\n... and where they came from:\n\n>>> picture.path.endswith('chelsea.png')\nTrue\n\n... and their size:\n\n>>> picture.size\n(451, 300)\n>>> picture.width\n451\n\nAs a reminder, we can preview the picture with our earlier command:\n\n>>> picture.show()  # doctest: +SKIP\n\nChanging `size` resizes the picture.\n\n>>> picture.size = (45, 30)\n\nWe can preview the changes we made to the picture with the ``compare`` command:\n\n>>> picture.compare()  # doctest: +SKIP\n\nYou can iterate over pixels, which have RGB values between 0 and 255,\nand know their location in the picture.\n\n>>> for pixel in picture:\n...     if (pixel.red > 128) and (pixel.x < picture.width):\n...         pixel.red = pixel.red / 2\n\nPictures know if they've been modified from the original file\n\n>>> picture.modified\nTrue\n>>> print(picture.path)\nNone\n\nPictures can be indexed like arrays\n\n>>> picture[0:20, 0:20] = (0, 0, 0)\n\nSaving the picture updates the path attribute, format, and modified state.\n\n>>> picture.save('save-demo.jpg')\n>>> picture.path.endswith('save-demo.jpg')\nTrue\n>>> picture.format\n'jpeg'\n>>> picture.modified\nFalse\n\nAn image can also be restored to its original state after modification:\n\n>>> picture[0:20, 0:20] = (0, 0, 0)\n>>> picture.compare()  # doctest: +SKIP\n>>> picture.reset()\n>>> picture.compare()  # doctest: +SKIP\n\n\"\"\"\nimport warnings\nfrom ._novice import Picture, open, colors, color_dict\n\n\nwarnings.warn(\"This module was deprecated in version 0.14. \"\n              \"It will be removed in 0.16.\")\n\n__all__ = ['Picture', 'open', 'colors', 'color_dict']\n", "path": "skimage/novice/__init__.py"}]}