prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  "manim -" is not working
  I broke this when revamping the config system. Thanks @naveen521kk for reporting
  
  </issue>
  <code>
  [start of manim/utils/module_ops.py]
  1 from .. import constants, logger, console, config
  2 import importlib.util
  3 import inspect
  4 import os
  5 from pathlib import Path
  6 import sys
  7 import types
  8 import re
  9 
  10 
  11 def get_module(file_name):
  12     if file_name == "-":
  13         module = types.ModuleType("input_scenes")
  14         logger.info(
  15             "Enter the animation's code & end with an EOF (CTRL+D on Linux/Unix, CTRL+Z on Windows):"
  16         )
  17         code = sys.stdin.read()
  18         if not code.startswith("from manim import"):
  19             logger.warn(
  20                 "Didn't find an import statement for Manim. Importing automatically..."
  21             )
  22             code = "from manim import *\n" + code
  23         logger.info("Rendering animation from typed code...")
  24         try:
  25             exec(code, module.__dict__)
  26             return module
  27         except Exception as e:
  28             logger.error(f"Failed to render scene: {str(e)}")
  29             sys.exit(2)
  30     else:
  31         if Path(file_name).exists():
  32             ext = file_name.suffix
  33             if ext != ".py":
  34                 raise ValueError(f"{file_name} is not a valid Manim python script.")
  35             module_name = ext.replace(os.sep, ".").split(".")[-1]
  36             spec = importlib.util.spec_from_file_location(module_name, file_name)
  37             module = importlib.util.module_from_spec(spec)
  38             sys.modules[module_name] = module
  39             spec.loader.exec_module(module)
  40             return module
  41         else:
  42             raise FileNotFoundError(f"{file_name} not found")
  43 
  44 
  45 def get_scene_classes_from_module(module):
  46     from ..scene.scene import Scene
  47 
  48     def is_child_scene(obj, module):
  49         return (
  50             inspect.isclass(obj)
  51             and issubclass(obj, Scene)
  52             and obj != Scene
  53             and obj.__module__.startswith(module.__name__)
  54         )
  55 
  56     return [
  57         member[1]
  58         for member in inspect.getmembers(module, lambda x: is_child_scene(x, module))
  59     ]
  60 
  61 
  62 def get_scenes_to_render(scene_classes):
  63     if not scene_classes:
  64         logger.error(constants.NO_SCENE_MESSAGE)
  65         return []
  66     if config["write_all"]:
  67         return scene_classes
  68     result = []
  69     for scene_name in config["scene_names"]:
  70         found = False
  71         for scene_class in scene_classes:
  72             if scene_class.__name__ == scene_name:
  73                 result.append(scene_class)
  74                 found = True
  75                 break
  76         if not found and (scene_name != ""):
  77             logger.error(constants.SCENE_NOT_FOUND_MESSAGE.format(scene_name))
  78     if result:
  79         return result
  80     return (
  81         [scene_classes[0]]
  82         if len(scene_classes) == 1
  83         else prompt_user_for_choice(scene_classes)
  84     )
  85 
  86 
  87 def prompt_user_for_choice(scene_classes):
  88     num_to_class = {}
  89     for count, scene_class in enumerate(scene_classes):
  90         count += 1  # start with 1 instead of 0
  91         name = scene_class.__name__
  92         console.print(f"{count}: {name}", style="logging.level.info")
  93         num_to_class[count] = scene_class
  94     try:
  95         user_input = console.input(
  96             f"[log.message] {constants.CHOOSE_NUMBER_MESSAGE} [/log.message]"
  97         )
  98         return [
  99             num_to_class[int(num_str)]
  100             for num_str in re.split(r"\s*,\s*", user_input.strip())
  101         ]
  102     except KeyError:
  103         logger.error(constants.INVALID_NUMBER_MESSAGE)
  104         sys.exit(2)
  105     except EOFError:
  106         sys.exit(1)
  107
  [end of manim/utils/module_ops.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/manim/utils/module_ops.py b/manim/utils/module_ops.py
  --- a/manim/utils/module_ops.py
  +++ b/manim/utils/module_ops.py
  @@ -9,7 +9,7 @@
   
   
   def get_module(file_name):
  -    if file_name == "-":
  +    if str(file_name) == "-":
           module = types.ModuleType("input_scenes")
           logger.info(
               "Enter the animation's code & end with an EOF (CTRL+D on Linux/Unix, CTRL+Z on Windows):"
  
verification_info: {"golden_diff": "diff --git a/manim/utils/module_ops.py b/manim/utils/module_ops.py\n--- a/manim/utils/module_ops.py\n+++ b/manim/utils/module_ops.py\n@@ -9,7 +9,7 @@\n \n \n def get_module(file_name):\n-    if file_name == \"-\":\n+    if str(file_name) == \"-\":\n         module = types.ModuleType(\"input_scenes\")\n         logger.info(\n             \"Enter the animation's code & end with an EOF (CTRL+D on Linux/Unix, CTRL+Z on Windows):\"\n", "issue": "\"manim -\" is not working\nI broke this when revamping the config system. Thanks @naveen521kk for reporting\n", "before_files": [{"content": "from .. import constants, logger, console, config\nimport importlib.util\nimport inspect\nimport os\nfrom pathlib import Path\nimport sys\nimport types\nimport re\n\n\ndef get_module(file_name):\n    if file_name == \"-\":\n        module = types.ModuleType(\"input_scenes\")\n        logger.info(\n            \"Enter the animation's code & end with an EOF (CTRL+D on Linux/Unix, CTRL+Z on Windows):\"\n        )\n        code = sys.stdin.read()\n        if not code.startswith(\"from manim import\"):\n            logger.warn(\n                \"Didn't find an import statement for Manim. Importing automatically...\"\n            )\n            code = \"from manim import *\\n\" + code\n        logger.info(\"Rendering animation from typed code...\")\n        try:\n            exec(code, module.__dict__)\n            return module\n        except Exception as e:\n            logger.error(f\"Failed to render scene: {str(e)}\")\n            sys.exit(2)\n    else:\n        if Path(file_name).exists():\n            ext = file_name.suffix\n            if ext != \".py\":\n                raise ValueError(f\"{file_name} is not a valid Manim python script.\")\n            module_name = ext.replace(os.sep, \".\").split(\".\")[-1]\n            spec = importlib.util.spec_from_file_location(module_name, file_name)\n            module = importlib.util.module_from_spec(spec)\n            sys.modules[module_name] = module\n            spec.loader.exec_module(module)\n            return module\n        else:\n            raise FileNotFoundError(f\"{file_name} not found\")\n\n\ndef get_scene_classes_from_module(module):\n    from ..scene.scene import Scene\n\n    def is_child_scene(obj, module):\n        return (\n            inspect.isclass(obj)\n            and issubclass(obj, Scene)\n            and obj != Scene\n            and obj.__module__.startswith(module.__name__)\n        )\n\n    return [\n        member[1]\n        for member in inspect.getmembers(module, lambda x: is_child_scene(x, module))\n    ]\n\n\ndef get_scenes_to_render(scene_classes):\n    if not scene_classes:\n        logger.error(constants.NO_SCENE_MESSAGE)\n        return []\n    if config[\"write_all\"]:\n        return scene_classes\n    result = []\n    for scene_name in config[\"scene_names\"]:\n        found = False\n        for scene_class in scene_classes:\n            if scene_class.__name__ == scene_name:\n                result.append(scene_class)\n                found = True\n                break\n        if not found and (scene_name != \"\"):\n            logger.error(constants.SCENE_NOT_FOUND_MESSAGE.format(scene_name))\n    if result:\n        return result\n    return (\n        [scene_classes[0]]\n        if len(scene_classes) == 1\n        else prompt_user_for_choice(scene_classes)\n    )\n\n\ndef prompt_user_for_choice(scene_classes):\n    num_to_class = {}\n    for count, scene_class in enumerate(scene_classes):\n        count += 1  # start with 1 instead of 0\n        name = scene_class.__name__\n        console.print(f\"{count}: {name}\", style=\"logging.level.info\")\n        num_to_class[count] = scene_class\n    try:\n        user_input = console.input(\n            f\"[log.message] {constants.CHOOSE_NUMBER_MESSAGE} [/log.message]\"\n        )\n        return [\n            num_to_class[int(num_str)]\n            for num_str in re.split(r\"\\s*,\\s*\", user_input.strip())\n        ]\n    except KeyError:\n        logger.error(constants.INVALID_NUMBER_MESSAGE)\n        sys.exit(2)\n    except EOFError:\n        sys.exit(1)\n", "path": "manim/utils/module_ops.py"}]}