prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  The documentation for the `--resolution` flag in the cli is wrong
  The current documentation of the `--resolution` flag says the format is `(W,H)` which is confusing because the passed value needs to be of the form `"W,H"`so the documentation should be updatet accordingly such that it reflects the usage `-r "W,H"` best with an example of `-r "1920,1080"`
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `manim/cli/render/render_options.py`
  Content:
  ```
  1 from __future__ import annotations
  2 
  3 import re
  4 
  5 import click
  6 from cloup import option, option_group
  7 
  8 from manim.constants import QUALITIES, RendererType
  9 
  10 from ... import logger
  11 
  12 
  13 def validate_scene_range(ctx, param, value):
  14     try:
  15         start = int(value)
  16         return (start,)
  17     except Exception:
  18         pass
  19 
  20     if value:
  21         try:
  22             start, end = map(int, re.split(r"[;,\-]", value))
  23             return start, end
  24         except Exception:
  25             logger.error("Couldn't determine a range for -n option.")
  26             exit()
  27 
  28 
  29 def validate_resolution(ctx, param, value):
  30     if value:
  31         try:
  32             start, end = map(int, re.split(r"[;,\-]", value))
  33             return (start, end)
  34         except Exception:
  35             logger.error("Resolution option is invalid.")
  36             exit()
  37 
  38 
  39 render_options = option_group(
  40     "Render Options",
  41     option(
  42         "-n",
  43         "--from_animation_number",
  44         callback=validate_scene_range,
  45         help="Start rendering from n_0 until n_1. If n_1 is left unspecified, "
  46         "renders all scenes after n_0.",
  47         default=None,
  48     ),
  49     option(
  50         "-a",
  51         "--write_all",
  52         is_flag=True,
  53         help="Render all scenes in the input file.",
  54         default=None,
  55     ),
  56     option(
  57         "--format",
  58         type=click.Choice(["png", "gif", "mp4", "webm", "mov"], case_sensitive=False),
  59         default=None,
  60     ),
  61     option("-s", "--save_last_frame", is_flag=True, default=None),
  62     option(
  63         "-q",
  64         "--quality",
  65         default=None,
  66         type=click.Choice(
  67             list(reversed([q["flag"] for q in QUALITIES.values() if q["flag"]])),  # type: ignore
  68             case_sensitive=False,
  69         ),
  70         help="Render quality at the follow resolution framerates, respectively: "
  71         + ", ".join(
  72             reversed(
  73                 [
  74                     f'{q["pixel_width"]}x{q["pixel_height"]} {q["frame_rate"]}FPS'
  75                     for q in QUALITIES.values()
  76                     if q["flag"]
  77                 ]
  78             )
  79         ),
  80     ),
  81     option(
  82         "-r",
  83         "--resolution",
  84         callback=validate_resolution,
  85         default=None,
  86         help="Resolution in (W,H) for when 16:9 aspect ratio isn't possible.",
  87     ),
  88     option(
  89         "--fps",
  90         "--frame_rate",
  91         "frame_rate",
  92         type=float,
  93         default=None,
  94         help="Render at this frame rate.",
  95     ),
  96     option(
  97         "--renderer",
  98         type=click.Choice(
  99             [renderer_type.value for renderer_type in RendererType],
  100             case_sensitive=False,
  101         ),
  102         help="Select a renderer for your Scene.",
  103         default="cairo",
  104     ),
  105     option(
  106         "-g",
  107         "--save_pngs",
  108         is_flag=True,
  109         default=None,
  110         help="Save each frame as png (Deprecated).",
  111     ),
  112     option(
  113         "-i",
  114         "--save_as_gif",
  115         default=None,
  116         is_flag=True,
  117         help="Save as a gif (Deprecated).",
  118     ),
  119     option(
  120         "--save_sections",
  121         default=None,
  122         is_flag=True,
  123         help="Save section videos in addition to movie file.",
  124     ),
  125     option(
  126         "-s",
  127         "--save_last_frame",
  128         default=None,
  129         is_flag=True,
  130         help="Save last frame as png (Deprecated).",
  131     ),
  132     option(
  133         "-t",
  134         "--transparent",
  135         is_flag=True,
  136         help="Render scenes with alpha channel.",
  137     ),
  138     option(
  139         "--use_projection_fill_shaders",
  140         is_flag=True,
  141         help="Use shaders for OpenGLVMobject fill which are compatible with transformation matrices.",
  142         default=None,
  143     ),
  144     option(
  145         "--use_projection_stroke_shaders",
  146         is_flag=True,
  147         help="Use shaders for OpenGLVMobject stroke which are compatible with transformation matrices.",
  148         default=None,
  149     ),
  150 )
  151
  ```
  --- 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/manim/cli/render/render_options.py b/manim/cli/render/render_options.py
  --- a/manim/cli/render/render_options.py
  +++ b/manim/cli/render/render_options.py
  @@ -83,7 +83,7 @@
           "--resolution",
           callback=validate_resolution,
           default=None,
  -        help="Resolution in (W,H) for when 16:9 aspect ratio isn't possible.",
  +        help='Resolution in "W,H" for when 16:9 aspect ratio isn\'t possible.',
       ),
       option(
           "--fps",
  
verification_info: {"golden_diff": "diff --git a/manim/cli/render/render_options.py b/manim/cli/render/render_options.py\n--- a/manim/cli/render/render_options.py\n+++ b/manim/cli/render/render_options.py\n@@ -83,7 +83,7 @@\n         \"--resolution\",\n         callback=validate_resolution,\n         default=None,\n-        help=\"Resolution in (W,H) for when 16:9 aspect ratio isn't possible.\",\n+        help='Resolution in \"W,H\" for when 16:9 aspect ratio isn\\'t possible.',\n     ),\n     option(\n         \"--fps\",\n", "issue": "The documentation for the `--resolution` flag in the cli is wrong\nThe current documentation of the `--resolution` flag says the format is `(W,H)` which is confusing because the passed value needs to be of the form `\"W,H\"`so the documentation should be updatet accordingly such that it reflects the usage `-r \"W,H\"` best with an example of `-r \"1920,1080\"`\n", "before_files": [{"content": "from __future__ import annotations\n\nimport re\n\nimport click\nfrom cloup import option, option_group\n\nfrom manim.constants import QUALITIES, RendererType\n\nfrom ... import logger\n\n\ndef validate_scene_range(ctx, param, value):\n    try:\n        start = int(value)\n        return (start,)\n    except Exception:\n        pass\n\n    if value:\n        try:\n            start, end = map(int, re.split(r\"[;,\\-]\", value))\n            return start, end\n        except Exception:\n            logger.error(\"Couldn't determine a range for -n option.\")\n            exit()\n\n\ndef validate_resolution(ctx, param, value):\n    if value:\n        try:\n            start, end = map(int, re.split(r\"[;,\\-]\", value))\n            return (start, end)\n        except Exception:\n            logger.error(\"Resolution option is invalid.\")\n            exit()\n\n\nrender_options = option_group(\n    \"Render Options\",\n    option(\n        \"-n\",\n        \"--from_animation_number\",\n        callback=validate_scene_range,\n        help=\"Start rendering from n_0 until n_1. If n_1 is left unspecified, \"\n        \"renders all scenes after n_0.\",\n        default=None,\n    ),\n    option(\n        \"-a\",\n        \"--write_all\",\n        is_flag=True,\n        help=\"Render all scenes in the input file.\",\n        default=None,\n    ),\n    option(\n        \"--format\",\n        type=click.Choice([\"png\", \"gif\", \"mp4\", \"webm\", \"mov\"], case_sensitive=False),\n        default=None,\n    ),\n    option(\"-s\", \"--save_last_frame\", is_flag=True, default=None),\n    option(\n        \"-q\",\n        \"--quality\",\n        default=None,\n        type=click.Choice(\n            list(reversed([q[\"flag\"] for q in QUALITIES.values() if q[\"flag\"]])),  # type: ignore\n            case_sensitive=False,\n        ),\n        help=\"Render quality at the follow resolution framerates, respectively: \"\n        + \", \".join(\n            reversed(\n                [\n                    f'{q[\"pixel_width\"]}x{q[\"pixel_height\"]} {q[\"frame_rate\"]}FPS'\n                    for q in QUALITIES.values()\n                    if q[\"flag\"]\n                ]\n            )\n        ),\n    ),\n    option(\n        \"-r\",\n        \"--resolution\",\n        callback=validate_resolution,\n        default=None,\n        help=\"Resolution in (W,H) for when 16:9 aspect ratio isn't possible.\",\n    ),\n    option(\n        \"--fps\",\n        \"--frame_rate\",\n        \"frame_rate\",\n        type=float,\n        default=None,\n        help=\"Render at this frame rate.\",\n    ),\n    option(\n        \"--renderer\",\n        type=click.Choice(\n            [renderer_type.value for renderer_type in RendererType],\n            case_sensitive=False,\n        ),\n        help=\"Select a renderer for your Scene.\",\n        default=\"cairo\",\n    ),\n    option(\n        \"-g\",\n        \"--save_pngs\",\n        is_flag=True,\n        default=None,\n        help=\"Save each frame as png (Deprecated).\",\n    ),\n    option(\n        \"-i\",\n        \"--save_as_gif\",\n        default=None,\n        is_flag=True,\n        help=\"Save as a gif (Deprecated).\",\n    ),\n    option(\n        \"--save_sections\",\n        default=None,\n        is_flag=True,\n        help=\"Save section videos in addition to movie file.\",\n    ),\n    option(\n        \"-s\",\n        \"--save_last_frame\",\n        default=None,\n        is_flag=True,\n        help=\"Save last frame as png (Deprecated).\",\n    ),\n    option(\n        \"-t\",\n        \"--transparent\",\n        is_flag=True,\n        help=\"Render scenes with alpha channel.\",\n    ),\n    option(\n        \"--use_projection_fill_shaders\",\n        is_flag=True,\n        help=\"Use shaders for OpenGLVMobject fill which are compatible with transformation matrices.\",\n        default=None,\n    ),\n    option(\n        \"--use_projection_stroke_shaders\",\n        is_flag=True,\n        help=\"Use shaders for OpenGLVMobject stroke which are compatible with transformation matrices.\",\n        default=None,\n    ),\n)\n", "path": "manim/cli/render/render_options.py"}], "after_files": [{"content": "from __future__ import annotations\n\nimport re\n\nimport click\nfrom cloup import option, option_group\n\nfrom manim.constants import QUALITIES, RendererType\n\nfrom ... import logger\n\n\ndef validate_scene_range(ctx, param, value):\n    try:\n        start = int(value)\n        return (start,)\n    except Exception:\n        pass\n\n    if value:\n        try:\n            start, end = map(int, re.split(r\"[;,\\-]\", value))\n            return start, end\n        except Exception:\n            logger.error(\"Couldn't determine a range for -n option.\")\n            exit()\n\n\ndef validate_resolution(ctx, param, value):\n    if value:\n        try:\n            start, end = map(int, re.split(r\"[;,\\-]\", value))\n            return (start, end)\n        except Exception:\n            logger.error(\"Resolution option is invalid.\")\n            exit()\n\n\nrender_options = option_group(\n    \"Render Options\",\n    option(\n        \"-n\",\n        \"--from_animation_number\",\n        callback=validate_scene_range,\n        help=\"Start rendering from n_0 until n_1. If n_1 is left unspecified, \"\n        \"renders all scenes after n_0.\",\n        default=None,\n    ),\n    option(\n        \"-a\",\n        \"--write_all\",\n        is_flag=True,\n        help=\"Render all scenes in the input file.\",\n        default=None,\n    ),\n    option(\n        \"--format\",\n        type=click.Choice([\"png\", \"gif\", \"mp4\", \"webm\", \"mov\"], case_sensitive=False),\n        default=None,\n    ),\n    option(\"-s\", \"--save_last_frame\", is_flag=True, default=None),\n    option(\n        \"-q\",\n        \"--quality\",\n        default=None,\n        type=click.Choice(\n            list(reversed([q[\"flag\"] for q in QUALITIES.values() if q[\"flag\"]])),  # type: ignore\n            case_sensitive=False,\n        ),\n        help=\"Render quality at the follow resolution framerates, respectively: \"\n        + \", \".join(\n            reversed(\n                [\n                    f'{q[\"pixel_width\"]}x{q[\"pixel_height\"]} {q[\"frame_rate\"]}FPS'\n                    for q in QUALITIES.values()\n                    if q[\"flag\"]\n                ]\n            )\n        ),\n    ),\n    option(\n        \"-r\",\n        \"--resolution\",\n        callback=validate_resolution,\n        default=None,\n        help='Resolution in \"W,H\" for when 16:9 aspect ratio isn\\'t possible.',\n    ),\n    option(\n        \"--fps\",\n        \"--frame_rate\",\n        \"frame_rate\",\n        type=float,\n        default=None,\n        help=\"Render at this frame rate.\",\n    ),\n    option(\n        \"--renderer\",\n        type=click.Choice(\n            [renderer_type.value for renderer_type in RendererType],\n            case_sensitive=False,\n        ),\n        help=\"Select a renderer for your Scene.\",\n        default=\"cairo\",\n    ),\n    option(\n        \"-g\",\n        \"--save_pngs\",\n        is_flag=True,\n        default=None,\n        help=\"Save each frame as png (Deprecated).\",\n    ),\n    option(\n        \"-i\",\n        \"--save_as_gif\",\n        default=None,\n        is_flag=True,\n        help=\"Save as a gif (Deprecated).\",\n    ),\n    option(\n        \"--save_sections\",\n        default=None,\n        is_flag=True,\n        help=\"Save section videos in addition to movie file.\",\n    ),\n    option(\n        \"-s\",\n        \"--save_last_frame\",\n        default=None,\n        is_flag=True,\n        help=\"Save last frame as png (Deprecated).\",\n    ),\n    option(\n        \"-t\",\n        \"--transparent\",\n        is_flag=True,\n        help=\"Render scenes with alpha channel.\",\n    ),\n    option(\n        \"--use_projection_fill_shaders\",\n        is_flag=True,\n        help=\"Use shaders for OpenGLVMobject fill which are compatible with transformation matrices.\",\n        default=None,\n    ),\n    option(\n        \"--use_projection_stroke_shaders\",\n        is_flag=True,\n        help=\"Use shaders for OpenGLVMobject stroke which are compatible with transformation matrices.\",\n        default=None,\n    ),\n)\n", "path": "manim/cli/render/render_options.py"}]}