prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Feature: forbid `credits()` builtin function
  We should add `credits()` as a forbidden function:
  
  ```
  » python -c 'credits()'
      Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
      for supporting Python development.  See www.python.org for more information.
  
  ```
  
  We need to add it here: https://github.com/wemake-services/wemake-python-styleguide/blob/3cedeb3c13ab6b16980a39edf657ab93d4c1f19e/wemake_python_styleguide/constants.py#L36-L38
  
  </issue>
  <code>
  [start of wemake_python_styleguide/constants.py]
  1 # -*- coding: utf-8 -*-
  2 
  3 """
  4 This module contains list of white- and black-listed ``python`` members.
  5 
  6 It contains lists of keywords and built-in functions we discourage to use.
  7 It also contains some exceptions that we allow to use in our codebase.
  8 """
  9 
  10 import re
  11 import sys
  12 
  13 # TODO: use consistent `.` for the `#:` comments
  14 # TODO: use consistent names: `*_BLACKLIST` and `*_WHITELIST`
  15 
  16 #: List of functions we forbid to use.
  17 BAD_FUNCTIONS = frozenset((
  18     # Code generation:
  19     'eval',
  20     'exec',
  21     'compile',
  22 
  23     # Magic:
  24     'globals',
  25     'locals',
  26     'vars',
  27     'dir',
  28 
  29     # IO:
  30     'input',
  31 
  32     # Attribute access:
  33     'hasattr',
  34     'delattr',
  35 
  36     # Misc:
  37     'copyright',
  38     'help',
  39 
  40     # Dynamic imports:
  41     '__import__',
  42 
  43     # OOP:
  44     'staticmethod',
  45 ))
  46 
  47 #: List of module metadata we forbid to use.
  48 BAD_MODULE_METADATA_VARIABLES = frozenset((
  49     '__author__',
  50     '__all__',
  51     '__version__',
  52     '__about__',
  53 ))
  54 
  55 
  56 _BAD_VARIABLE_NAMES = [
  57     # Meaningless words:
  58     'data',
  59     'result',
  60     'results',
  61     'item',
  62     'items',
  63     'value',
  64     'values',
  65     'val',
  66     'vals',
  67     'var',
  68     'vars',
  69     'content',
  70     'contents',
  71     'info',
  72     'handle',
  73     'handler',
  74     'file',
  75     'obj',
  76     'objects',
  77     'objs',
  78     'some',
  79 
  80     # Confusables:
  81     'no',
  82     'true',
  83     'false',
  84 
  85     # Names from examples:
  86     'foo',
  87     'bar',
  88     'baz',
  89 ]
  90 
  91 if sys.version_info < (3, 7):  # pragma: no cover
  92     _BAD_VARIABLE_NAMES.extend([
  93         # Compatibility with `python3.7`:
  94         'async',
  95         'await',
  96     ])
  97 
  98 #: List of variable names we forbid to use.
  99 BAD_VARIABLE_NAMES = frozenset(_BAD_VARIABLE_NAMES)
  100 
  101 #: List of magic methods that are forbiden to use.
  102 BAD_MAGIC_METHODS = frozenset((
  103     # Since we don't use `del`:
  104     '__del__',
  105     '__delitem__',
  106     '__delete__',
  107 
  108     '__dir__',  # since we don't use `dir()`
  109     '__delattr__',  # since we don't use `delattr()`
  110 ))
  111 
  112 #: List of nested classes' names we allow to use.
  113 NESTED_CLASSES_WHITELIST = frozenset((
  114     'Meta',  # django forms, models, drf, etc
  115     'Params',  # factoryboy specific
  116 ))
  117 
  118 #: List of nested functions' names we allow to use.
  119 NESTED_FUNCTIONS_WHITELIST = frozenset((
  120     'decorator',
  121     'factory',
  122 ))
  123 
  124 #: List of allowed ``__future__`` imports.
  125 FUTURE_IMPORTS_WHITELIST = frozenset((
  126     'annotations',
  127     'generator_stop',
  128 ))
  129 
  130 #: List of blacklisted module names:
  131 BAD_MODULE_NAMES = frozenset((
  132     'util',
  133     'utils',
  134     'utilities',
  135     'helpers',
  136 ))
  137 
  138 #: List of allowed module magic names:
  139 MAGIC_MODULE_NAMES_WHITELIST = frozenset((
  140     '__init__',
  141     '__main__',
  142 ))
  143 
  144 #: Regex pattern to name modules:
  145 MODULE_NAME_PATTERN = re.compile(r'^_?_?[a-z][a-z\d_]+[a-z\d](__)?$')
  146 
  147 #: Common numbers that are allowed to be used without being called "magic":
  148 MAGIC_NUMBERS_WHITELIST = frozenset((
  149     0.5,
  150     100,
  151     1000,
  152     1024,  # bytes
  153     24,  # hours
  154     60,  # seconds, minutes
  155 ))
  156 
  157 
  158 # Internal variables
  159 # They are not publicly documented since they are not used by the end user.
  160 
  161 # This variable is used as a default filename, when it is not passed by flake8:
  162 STDIN = 'stdin'
  163 
  164 # TODO: rename to `INIT_MODULE`
  165 # This variable is used to specify as a placeholder for `__init__.py`:
  166 INIT = '__init__'
  167
  [end of wemake_python_styleguide/constants.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/wemake_python_styleguide/constants.py b/wemake_python_styleguide/constants.py
  --- a/wemake_python_styleguide/constants.py
  +++ b/wemake_python_styleguide/constants.py
  @@ -36,6 +36,7 @@
       # Misc:
       'copyright',
       'help',
  +    'credits',
   
       # Dynamic imports:
       '__import__',
  
verification_info: {"golden_diff": "diff --git a/wemake_python_styleguide/constants.py b/wemake_python_styleguide/constants.py\n--- a/wemake_python_styleguide/constants.py\n+++ b/wemake_python_styleguide/constants.py\n@@ -36,6 +36,7 @@\n     # Misc:\n     'copyright',\n     'help',\n+    'credits',\n \n     # Dynamic imports:\n     '__import__',\n", "issue": "Feature: forbid `credits()` builtin function\nWe should add `credits()` as a forbidden function:\r\n\r\n```\r\n\u00bb python -c 'credits()'\r\n    Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands\r\n    for supporting Python development.  See www.python.org for more information.\r\n\r\n```\r\n\r\nWe need to add it here: https://github.com/wemake-services/wemake-python-styleguide/blob/3cedeb3c13ab6b16980a39edf657ab93d4c1f19e/wemake_python_styleguide/constants.py#L36-L38\n", "before_files": [{"content": "# -*- coding: utf-8 -*-\n\n\"\"\"\nThis module contains list of white- and black-listed ``python`` members.\n\nIt contains lists of keywords and built-in functions we discourage to use.\nIt also contains some exceptions that we allow to use in our codebase.\n\"\"\"\n\nimport re\nimport sys\n\n# TODO: use consistent `.` for the `#:` comments\n# TODO: use consistent names: `*_BLACKLIST` and `*_WHITELIST`\n\n#: List of functions we forbid to use.\nBAD_FUNCTIONS = frozenset((\n    # Code generation:\n    'eval',\n    'exec',\n    'compile',\n\n    # Magic:\n    'globals',\n    'locals',\n    'vars',\n    'dir',\n\n    # IO:\n    'input',\n\n    # Attribute access:\n    'hasattr',\n    'delattr',\n\n    # Misc:\n    'copyright',\n    'help',\n\n    # Dynamic imports:\n    '__import__',\n\n    # OOP:\n    'staticmethod',\n))\n\n#: List of module metadata we forbid to use.\nBAD_MODULE_METADATA_VARIABLES = frozenset((\n    '__author__',\n    '__all__',\n    '__version__',\n    '__about__',\n))\n\n\n_BAD_VARIABLE_NAMES = [\n    # Meaningless words:\n    'data',\n    'result',\n    'results',\n    'item',\n    'items',\n    'value',\n    'values',\n    'val',\n    'vals',\n    'var',\n    'vars',\n    'content',\n    'contents',\n    'info',\n    'handle',\n    'handler',\n    'file',\n    'obj',\n    'objects',\n    'objs',\n    'some',\n\n    # Confusables:\n    'no',\n    'true',\n    'false',\n\n    # Names from examples:\n    'foo',\n    'bar',\n    'baz',\n]\n\nif sys.version_info < (3, 7):  # pragma: no cover\n    _BAD_VARIABLE_NAMES.extend([\n        # Compatibility with `python3.7`:\n        'async',\n        'await',\n    ])\n\n#: List of variable names we forbid to use.\nBAD_VARIABLE_NAMES = frozenset(_BAD_VARIABLE_NAMES)\n\n#: List of magic methods that are forbiden to use.\nBAD_MAGIC_METHODS = frozenset((\n    # Since we don't use `del`:\n    '__del__',\n    '__delitem__',\n    '__delete__',\n\n    '__dir__',  # since we don't use `dir()`\n    '__delattr__',  # since we don't use `delattr()`\n))\n\n#: List of nested classes' names we allow to use.\nNESTED_CLASSES_WHITELIST = frozenset((\n    'Meta',  # django forms, models, drf, etc\n    'Params',  # factoryboy specific\n))\n\n#: List of nested functions' names we allow to use.\nNESTED_FUNCTIONS_WHITELIST = frozenset((\n    'decorator',\n    'factory',\n))\n\n#: List of allowed ``__future__`` imports.\nFUTURE_IMPORTS_WHITELIST = frozenset((\n    'annotations',\n    'generator_stop',\n))\n\n#: List of blacklisted module names:\nBAD_MODULE_NAMES = frozenset((\n    'util',\n    'utils',\n    'utilities',\n    'helpers',\n))\n\n#: List of allowed module magic names:\nMAGIC_MODULE_NAMES_WHITELIST = frozenset((\n    '__init__',\n    '__main__',\n))\n\n#: Regex pattern to name modules:\nMODULE_NAME_PATTERN = re.compile(r'^_?_?[a-z][a-z\\d_]+[a-z\\d](__)?$')\n\n#: Common numbers that are allowed to be used without being called \"magic\":\nMAGIC_NUMBERS_WHITELIST = frozenset((\n    0.5,\n    100,\n    1000,\n    1024,  # bytes\n    24,  # hours\n    60,  # seconds, minutes\n))\n\n\n# Internal variables\n# They are not publicly documented since they are not used by the end user.\n\n# This variable is used as a default filename, when it is not passed by flake8:\nSTDIN = 'stdin'\n\n# TODO: rename to `INIT_MODULE`\n# This variable is used to specify as a placeholder for `__init__.py`:\nINIT = '__init__'\n", "path": "wemake_python_styleguide/constants.py"}]}