prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Remove SCRAPY_SELECTORS_BACKEND from scrapy.settings.deprecated
  There is no trace of `SCRAPY_SELECTORS_BACKEND` in the code anymore, so that line should go.
  
  It would be a good chance to review the rest of the lines in that file, some others may be worth removing as well.
  
  Related to https://github.com/scrapy/scrapy/issues/4356
  
  </issue>
  <code>
  [start of scrapy/settings/deprecated.py]
  1 import warnings
  2 from scrapy.exceptions import ScrapyDeprecationWarning
  3 
  4 DEPRECATED_SETTINGS = [
  5     ('TRACK_REFS', 'no longer needed (trackref is always enabled)'),
  6     ('RESPONSE_CLASSES', 'no longer supported'),
  7     ('DEFAULT_RESPONSE_ENCODING', 'no longer supported'),
  8     ('BOT_VERSION', 'no longer used (user agent defaults to Scrapy now)'),
  9     ('ENCODING_ALIASES', 'no longer needed (encoding discovery uses w3lib now)'),
  10     ('STATS_ENABLED', 'no longer supported (change STATS_CLASS instead)'),
  11     ('SQLITE_DB', 'no longer supported'),
  12     ('SELECTORS_BACKEND', 'use SCRAPY_SELECTORS_BACKEND environment variable instead'),
  13     ('AUTOTHROTTLE_MIN_DOWNLOAD_DELAY', 'use DOWNLOAD_DELAY instead'),
  14     ('AUTOTHROTTLE_MAX_CONCURRENCY', 'use CONCURRENT_REQUESTS_PER_DOMAIN instead'),
  15     ('AUTOTHROTTLE_MAX_CONCURRENCY', 'use CONCURRENT_REQUESTS_PER_DOMAIN instead'),
  16     ('REDIRECT_MAX_METAREFRESH_DELAY', 'use METAREFRESH_MAXDELAY instead'),
  17     ('LOG_UNSERIALIZABLE_REQUESTS', 'use SCHEDULER_DEBUG instead'),
  18 ]
  19 
  20 
  21 def check_deprecated_settings(settings):
  22     deprecated = [x for x in DEPRECATED_SETTINGS if settings[x[0]] is not None]
  23     if deprecated:
  24         msg = "You are using the following settings which are deprecated or obsolete"
  25         msg += " (ask scrapy-users@googlegroups.com for alternatives):"
  26         msg = msg + "\n    " + "\n    ".join("%s: %s" % x for x in deprecated)
  27         warnings.warn(msg, ScrapyDeprecationWarning)
  28
  [end of scrapy/settings/deprecated.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/scrapy/settings/deprecated.py b/scrapy/settings/deprecated.py
  --- a/scrapy/settings/deprecated.py
  +++ b/scrapy/settings/deprecated.py
  @@ -9,10 +9,8 @@
       ('ENCODING_ALIASES', 'no longer needed (encoding discovery uses w3lib now)'),
       ('STATS_ENABLED', 'no longer supported (change STATS_CLASS instead)'),
       ('SQLITE_DB', 'no longer supported'),
  -    ('SELECTORS_BACKEND', 'use SCRAPY_SELECTORS_BACKEND environment variable instead'),
       ('AUTOTHROTTLE_MIN_DOWNLOAD_DELAY', 'use DOWNLOAD_DELAY instead'),
       ('AUTOTHROTTLE_MAX_CONCURRENCY', 'use CONCURRENT_REQUESTS_PER_DOMAIN instead'),
  -    ('AUTOTHROTTLE_MAX_CONCURRENCY', 'use CONCURRENT_REQUESTS_PER_DOMAIN instead'),
       ('REDIRECT_MAX_METAREFRESH_DELAY', 'use METAREFRESH_MAXDELAY instead'),
       ('LOG_UNSERIALIZABLE_REQUESTS', 'use SCHEDULER_DEBUG instead'),
   ]
  
verification_info: {"golden_diff": "diff --git a/scrapy/settings/deprecated.py b/scrapy/settings/deprecated.py\n--- a/scrapy/settings/deprecated.py\n+++ b/scrapy/settings/deprecated.py\n@@ -9,10 +9,8 @@\n     ('ENCODING_ALIASES', 'no longer needed (encoding discovery uses w3lib now)'),\n     ('STATS_ENABLED', 'no longer supported (change STATS_CLASS instead)'),\n     ('SQLITE_DB', 'no longer supported'),\n-    ('SELECTORS_BACKEND', 'use SCRAPY_SELECTORS_BACKEND environment variable instead'),\n     ('AUTOTHROTTLE_MIN_DOWNLOAD_DELAY', 'use DOWNLOAD_DELAY instead'),\n     ('AUTOTHROTTLE_MAX_CONCURRENCY', 'use CONCURRENT_REQUESTS_PER_DOMAIN instead'),\n-    ('AUTOTHROTTLE_MAX_CONCURRENCY', 'use CONCURRENT_REQUESTS_PER_DOMAIN instead'),\n     ('REDIRECT_MAX_METAREFRESH_DELAY', 'use METAREFRESH_MAXDELAY instead'),\n     ('LOG_UNSERIALIZABLE_REQUESTS', 'use SCHEDULER_DEBUG instead'),\n ]\n", "issue": "Remove SCRAPY_SELECTORS_BACKEND from scrapy.settings.deprecated\nThere is no trace of `SCRAPY_SELECTORS_BACKEND` in the code anymore, so that line should go.\r\n\r\nIt would be a good chance to review the rest of the lines in that file, some others may be worth removing as well.\r\n\r\nRelated to https://github.com/scrapy/scrapy/issues/4356\n", "before_files": [{"content": "import warnings\nfrom scrapy.exceptions import ScrapyDeprecationWarning\n\nDEPRECATED_SETTINGS = [\n    ('TRACK_REFS', 'no longer needed (trackref is always enabled)'),\n    ('RESPONSE_CLASSES', 'no longer supported'),\n    ('DEFAULT_RESPONSE_ENCODING', 'no longer supported'),\n    ('BOT_VERSION', 'no longer used (user agent defaults to Scrapy now)'),\n    ('ENCODING_ALIASES', 'no longer needed (encoding discovery uses w3lib now)'),\n    ('STATS_ENABLED', 'no longer supported (change STATS_CLASS instead)'),\n    ('SQLITE_DB', 'no longer supported'),\n    ('SELECTORS_BACKEND', 'use SCRAPY_SELECTORS_BACKEND environment variable instead'),\n    ('AUTOTHROTTLE_MIN_DOWNLOAD_DELAY', 'use DOWNLOAD_DELAY instead'),\n    ('AUTOTHROTTLE_MAX_CONCURRENCY', 'use CONCURRENT_REQUESTS_PER_DOMAIN instead'),\n    ('AUTOTHROTTLE_MAX_CONCURRENCY', 'use CONCURRENT_REQUESTS_PER_DOMAIN instead'),\n    ('REDIRECT_MAX_METAREFRESH_DELAY', 'use METAREFRESH_MAXDELAY instead'),\n    ('LOG_UNSERIALIZABLE_REQUESTS', 'use SCHEDULER_DEBUG instead'),\n]\n\n\ndef check_deprecated_settings(settings):\n    deprecated = [x for x in DEPRECATED_SETTINGS if settings[x[0]] is not None]\n    if deprecated:\n        msg = \"You are using the following settings which are deprecated or obsolete\"\n        msg += \" (ask scrapy-users@googlegroups.com for alternatives):\"\n        msg = msg + \"\\n    \" + \"\\n    \".join(\"%s: %s\" % x for x in deprecated)\n        warnings.warn(msg, ScrapyDeprecationWarning)\n", "path": "scrapy/settings/deprecated.py"}]}