Repository: ManimCommunity/manim
File: manim/_config/utils.py (Python)

Code before:
            "max_files_cached",
            # the next two must be set BEFORE digesting frame_width and frame_height
            "pixel_height",
            "pixel_width",
            "webgl_updater_fps",
        ]:
            setattr(self, key, parser["CLI"].getint(key))

        # str keys
        for key in [
            "assets_dir",
            "verbosity",
            "media_dir",
            "log_dir",
            "video_dir",
            "images_dir",
            "text_dir",
            "tex_dir",
            "partial_movie_dir",
            "input_file",
            "output_file",
            "png_mode",
            "movie_file_extension",
            "background_color",
            "webgl_renderer_path",
            "jupyter_width",
        ]:
            setattr(self, key, parser["CLI"].get(key, fallback="", raw=True))

        # float keys
        for key in [
            "background_opacity",
            # the next two are floats but have their own logic, applied later
            # "frame_width",
            # "frame_height",
        ]:
            setattr(self, key, parser["CLI"].getfloat(key))
        # plugins
        self.plugins = parser["CLI"].get("plugins", fallback="", raw=True).split(",")
        # the next two must be set AFTER digesting pixel_width and pixel_height
        self["frame_height"] = parser["CLI"].getfloat("frame_height", 8.0)
        width = parser["CLI"].getfloat("frame_width", None)
        if width is None:
            self["frame_width"] = self["frame_height"] * self["aspect_ratio"]
        else:
            self["frame_width"] = width

        # other logic
        val = parser["CLI"].get("tex_template_file")
        if val:
            setattr(self, "tex_template_file", val)

Review comment (suggestion):
Here the ManimConfig parser object is setting attributes specific to "CLI" as you can see on line 550 with `setattr(....)`, this should be done elsewhere. See how it's done for ffmpeg_loglevel on [line 575](https://github.com/ManimCommunity/manim/blob/6b35cb8eeca9e8af3d48615a6fec28937d2cfbb2/manim/_config/utils.py#L575)
```suggestion
```

Also see how ffmpeg_loglevel is handled in `digest_file` for an example how to set that on [line 843](https://github.com/ManimCommunity/manim/blob/6b35cb8eeca9e8af3d48615a6fec28937d2cfbb2/manim/_config/utils.py#L843)

Code after:
            "upto_animation_number",
            "frame_rate",
            "max_files_cached",
            # the next two must be set BEFORE digesting frame_width and frame_height
            "pixel_height",
            "pixel_width",
            "webgl_updater_fps",
        ]:
            setattr(self, key, parser["CLI"].getint(key))

        # str keys
        for key in [
            "assets_dir",
            "verbosity",
            "media_dir",
            "log_dir",
            "video_dir",
            "images_dir",
            "text_dir",
            "tex_dir",
            "partial_movie_dir",
            "input_file",
            "output_file",
            "png_mode",
            "movie_file_extension",
            "background_color",
            "webgl_renderer_path",
        ]:
            setattr(self, key, parser["CLI"].get(key, fallback="", raw=True))

        # float keys
        for key in [
            "background_opacity",
            # the next two are floats but have their own logic, applied later
            # "frame_width",
            # "frame_height",
        ]:
            setattr(self, key, parser["CLI"].getfloat(key))
        # plugins
        self.plugins = parser["CLI"].get("plugins", fallback="", raw=True).split(",")
        # the next two must be set AFTER digesting pixel_width and pixel_height
        self["frame_height"] = parser["CLI"].getfloat("frame_height", 8.0)
        width = parser["CLI"].getfloat("frame_width", None)
        if width is None:
            self["frame_width"] = self["frame_height"] * self["aspect_ratio"]
        else:
            self["frame_width"] = width

        # other logic
        val = parser["CLI"].get("tex_template_file")
        if val: