prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  imdb module not working anymore
  I just noticed that anytime you make a call to imdb now the bot responds: 
  
  > [MOVIE] No API key provided.
  
  I know it used to work, not sure how recently. Maybe it can be switched to a different database that doesn't require an API key?
  
  </issue>
  <code>
  [start of sopel/modules/movie.py]
  1 # coding=utf-8
  2 """
  3 imdb.py - Sopel Movie Information Module
  4 Copyright © 2012-2013, Elad Alfassa, <elad@fedoraproject.org>
  5 Licensed under the Eiffel Forum License 2.
  6 
  7 This module relies on omdbapi.com
  8 """
  9 from __future__ import unicode_literals, absolute_import, print_function, division
  10 
  11 import requests
  12 import sopel.module
  13 from sopel.logger import get_logger
  14 
  15 LOGGER = get_logger(__name__)
  16 
  17 
  18 @sopel.module.commands('movie', 'imdb')
  19 @sopel.module.example('.movie ThisTitleDoesNotExist', '[MOVIE] Movie not found!')
  20 @sopel.module.example('.movie Citizen Kane', '[MOVIE] Title: Citizen Kane | Year: 1941 | Rating: 8.4 | Genre: Drama, Mystery | IMDB Link: http://imdb.com/title/tt0033467')
  21 def movie(bot, trigger):
  22     """
  23     Returns some information about a movie, like Title, Year, Rating, Genre and IMDB Link.
  24     """
  25     if not trigger.group(2):
  26         return
  27     word = trigger.group(2).rstrip()
  28     uri = "http://www.omdbapi.com/"
  29     data = requests.get(uri, params={'t': word}, timeout=30,
  30                         verify=bot.config.core.verify_ssl).json()
  31     if data['Response'] == 'False':
  32         if 'Error' in data:
  33             message = '[MOVIE] %s' % data['Error']
  34         else:
  35             LOGGER.warning(
  36                 'Got an error from the OMDb api, search phrase was %s; data was %s',
  37                 word, str(data))
  38             message = '[MOVIE] Got an error from OMDbapi'
  39     else:
  40         message = '[MOVIE] Title: ' + data['Title'] + \
  41                   ' | Year: ' + data['Year'] + \
  42                   ' | Rating: ' + data['imdbRating'] + \
  43                   ' | Genre: ' + data['Genre'] + \
  44                   ' | IMDB Link: http://imdb.com/title/' + data['imdbID']
  45     bot.say(message)
  46 
  47 
  48 if __name__ == "__main__":
  49     from sopel.test_tools import run_example_tests
  50     run_example_tests(__file__)
  51
  [end of sopel/modules/movie.py]
  [start of conftest.py]
  1 # This file lists files which should be ignored by pytest
  2 collect_ignore = ["setup.py", "sopel.py", "sopel/modules/ipython.py", "sopel/modules/movie.py"]
  3
  [end of conftest.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/conftest.py b/conftest.py
  --- a/conftest.py
  +++ b/conftest.py
  @@ -1,2 +1,2 @@
   # This file lists files which should be ignored by pytest
  -collect_ignore = ["setup.py", "sopel.py", "sopel/modules/ipython.py", "sopel/modules/movie.py"]
  +collect_ignore = ["setup.py", "sopel.py", "sopel/modules/ipython.py"]
  diff --git a/sopel/modules/movie.py b/sopel/modules/movie.py
  deleted file mode 100644
  --- a/sopel/modules/movie.py
  +++ /dev/null
  @@ -1,50 +0,0 @@
  -# coding=utf-8
  -"""
  -imdb.py - Sopel Movie Information Module
  -Copyright © 2012-2013, Elad Alfassa, <elad@fedoraproject.org>
  -Licensed under the Eiffel Forum License 2.
  -
  -This module relies on omdbapi.com
  -"""
  -from __future__ import unicode_literals, absolute_import, print_function, division
  -
  -import requests
  -import sopel.module
  -from sopel.logger import get_logger
  -
  -LOGGER = get_logger(__name__)
  -
  -
  -@sopel.module.commands('movie', 'imdb')
  -@sopel.module.example('.movie ThisTitleDoesNotExist', '[MOVIE] Movie not found!')
  -@sopel.module.example('.movie Citizen Kane', '[MOVIE] Title: Citizen Kane | Year: 1941 | Rating: 8.4 | Genre: Drama, Mystery | IMDB Link: http://imdb.com/title/tt0033467')
  -def movie(bot, trigger):
  -    """
  -    Returns some information about a movie, like Title, Year, Rating, Genre and IMDB Link.
  -    """
  -    if not trigger.group(2):
  -        return
  -    word = trigger.group(2).rstrip()
  -    uri = "http://www.omdbapi.com/"
  -    data = requests.get(uri, params={'t': word}, timeout=30,
  -                        verify=bot.config.core.verify_ssl).json()
  -    if data['Response'] == 'False':
  -        if 'Error' in data:
  -            message = '[MOVIE] %s' % data['Error']
  -        else:
  -            LOGGER.warning(
  -                'Got an error from the OMDb api, search phrase was %s; data was %s',
  -                word, str(data))
  -            message = '[MOVIE] Got an error from OMDbapi'
  -    else:
  -        message = '[MOVIE] Title: ' + data['Title'] + \
  -                  ' | Year: ' + data['Year'] + \
  -                  ' | Rating: ' + data['imdbRating'] + \
  -                  ' | Genre: ' + data['Genre'] + \
  -                  ' | IMDB Link: http://imdb.com/title/' + data['imdbID']
  -    bot.say(message)
  -
  -
  -if __name__ == "__main__":
  -    from sopel.test_tools import run_example_tests
  -    run_example_tests(__file__)
  
verification_info: {"golden_diff": "diff --git a/conftest.py b/conftest.py\n--- a/conftest.py\n+++ b/conftest.py\n@@ -1,2 +1,2 @@\n # This file lists files which should be ignored by pytest\n-collect_ignore = [\"setup.py\", \"sopel.py\", \"sopel/modules/ipython.py\", \"sopel/modules/movie.py\"]\n+collect_ignore = [\"setup.py\", \"sopel.py\", \"sopel/modules/ipython.py\"]\ndiff --git a/sopel/modules/movie.py b/sopel/modules/movie.py\ndeleted file mode 100644\n--- a/sopel/modules/movie.py\n+++ /dev/null\n@@ -1,50 +0,0 @@\n-# coding=utf-8\n-\"\"\"\n-imdb.py - Sopel Movie Information Module\n-Copyright \u00a9 2012-2013, Elad Alfassa, <elad@fedoraproject.org>\n-Licensed under the Eiffel Forum License 2.\n-\n-This module relies on omdbapi.com\n-\"\"\"\n-from __future__ import unicode_literals, absolute_import, print_function, division\n-\n-import requests\n-import sopel.module\n-from sopel.logger import get_logger\n-\n-LOGGER = get_logger(__name__)\n-\n-\n-@sopel.module.commands('movie', 'imdb')\n-@sopel.module.example('.movie ThisTitleDoesNotExist', '[MOVIE] Movie not found!')\n-@sopel.module.example('.movie Citizen Kane', '[MOVIE] Title: Citizen Kane | Year: 1941 | Rating: 8.4 | Genre: Drama, Mystery | IMDB Link: http://imdb.com/title/tt0033467')\n-def movie(bot, trigger):\n-    \"\"\"\n-    Returns some information about a movie, like Title, Year, Rating, Genre and IMDB Link.\n-    \"\"\"\n-    if not trigger.group(2):\n-        return\n-    word = trigger.group(2).rstrip()\n-    uri = \"http://www.omdbapi.com/\"\n-    data = requests.get(uri, params={'t': word}, timeout=30,\n-                        verify=bot.config.core.verify_ssl).json()\n-    if data['Response'] == 'False':\n-        if 'Error' in data:\n-            message = '[MOVIE] %s' % data['Error']\n-        else:\n-            LOGGER.warning(\n-                'Got an error from the OMDb api, search phrase was %s; data was %s',\n-                word, str(data))\n-            message = '[MOVIE] Got an error from OMDbapi'\n-    else:\n-        message = '[MOVIE] Title: ' + data['Title'] + \\\n-                  ' | Year: ' + data['Year'] + \\\n-                  ' | Rating: ' + data['imdbRating'] + \\\n-                  ' | Genre: ' + data['Genre'] + \\\n-                  ' | IMDB Link: http://imdb.com/title/' + data['imdbID']\n-    bot.say(message)\n-\n-\n-if __name__ == \"__main__\":\n-    from sopel.test_tools import run_example_tests\n-    run_example_tests(__file__)\n", "issue": "imdb module not working anymore\nI just noticed that anytime you make a call to imdb now the bot responds: \r\n\r\n> [MOVIE] No API key provided.\r\n\r\nI know it used to work, not sure how recently. Maybe it can be switched to a different database that doesn't require an API key?\n", "before_files": [{"content": "# coding=utf-8\n\"\"\"\nimdb.py - Sopel Movie Information Module\nCopyright \u00a9 2012-2013, Elad Alfassa, <elad@fedoraproject.org>\nLicensed under the Eiffel Forum License 2.\n\nThis module relies on omdbapi.com\n\"\"\"\nfrom __future__ import unicode_literals, absolute_import, print_function, division\n\nimport requests\nimport sopel.module\nfrom sopel.logger import get_logger\n\nLOGGER = get_logger(__name__)\n\n\n@sopel.module.commands('movie', 'imdb')\n@sopel.module.example('.movie ThisTitleDoesNotExist', '[MOVIE] Movie not found!')\n@sopel.module.example('.movie Citizen Kane', '[MOVIE] Title: Citizen Kane | Year: 1941 | Rating: 8.4 | Genre: Drama, Mystery | IMDB Link: http://imdb.com/title/tt0033467')\ndef movie(bot, trigger):\n    \"\"\"\n    Returns some information about a movie, like Title, Year, Rating, Genre and IMDB Link.\n    \"\"\"\n    if not trigger.group(2):\n        return\n    word = trigger.group(2).rstrip()\n    uri = \"http://www.omdbapi.com/\"\n    data = requests.get(uri, params={'t': word}, timeout=30,\n                        verify=bot.config.core.verify_ssl).json()\n    if data['Response'] == 'False':\n        if 'Error' in data:\n            message = '[MOVIE] %s' % data['Error']\n        else:\n            LOGGER.warning(\n                'Got an error from the OMDb api, search phrase was %s; data was %s',\n                word, str(data))\n            message = '[MOVIE] Got an error from OMDbapi'\n    else:\n        message = '[MOVIE] Title: ' + data['Title'] + \\\n                  ' | Year: ' + data['Year'] + \\\n                  ' | Rating: ' + data['imdbRating'] + \\\n                  ' | Genre: ' + data['Genre'] + \\\n                  ' | IMDB Link: http://imdb.com/title/' + data['imdbID']\n    bot.say(message)\n\n\nif __name__ == \"__main__\":\n    from sopel.test_tools import run_example_tests\n    run_example_tests(__file__)\n", "path": "sopel/modules/movie.py"}, {"content": "# This file lists files which should be ignored by pytest\ncollect_ignore = [\"setup.py\", \"sopel.py\", \"sopel/modules/ipython.py\", \"sopel/modules/movie.py\"]\n", "path": "conftest.py"}]}