-
-
Notifications
You must be signed in to change notification settings - Fork 49
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore(lib): reduce import overhead (#147)
* chore(lib): reduce import overhead This PR should reduce the import time overhead caused by manim imports. To solve this, manim is only imported when Slide or ThreeDSlide is needed. A custom logger is now defined, which copies the one from Manim Community. FFMPEG_BIN is now hardcoded, but should be configurable in the future via the CLI or some config file. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix(lib): remove last .manim import * fix(lib): remove print * chore(lib): fix typo --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
- Loading branch information
1 parent
a440da9
commit 700584c
Showing
10 changed files
with
1,457 additions
and
1,350 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,48 @@ | ||
# flake8: noqa: F401 | ||
import sys | ||
from types import ModuleType | ||
from typing import Any, List | ||
|
||
from .__version__ import __version__ | ||
from .slide import Slide, ThreeDSlide | ||
|
||
|
||
class module(ModuleType): | ||
def __getattr__(self, name: str) -> Any: | ||
if name == "Slide" or name == "ThreeDSlide": | ||
module = __import__( | ||
"manim_slides.slide", None, None, ["Slide", "ThreeDSlide"] | ||
) | ||
return getattr(module, name) | ||
|
||
return ModuleType.__getattribute__(self, name) | ||
|
||
def __dir__(self) -> List[str]: | ||
result = list(new_module.__all__) | ||
result.extend( | ||
( | ||
"__file__", | ||
"__doc__", | ||
"__all__", | ||
"__docformat__", | ||
"__name__", | ||
"__path__", | ||
"__package__", | ||
"__version__", | ||
) | ||
) | ||
return result | ||
|
||
|
||
old_module = sys.modules["manim_slides"] | ||
new_module = sys.modules["manim_slides"] = module("manim_slides") | ||
|
||
new_module.__dict__.update( | ||
{ | ||
"__file__": __file__, | ||
"__package__": "manim_slides", | ||
"__path__": __path__, | ||
"__doc__": __doc__, | ||
"__version__": __version__, | ||
"__all__": ("__version__", "Slides", "ThreeDSlide"), | ||
} | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
FOLDER_PATH: str = "./slides" | ||
CONFIG_PATH: str = ".manim-slides.json" | ||
FFMPEG_BIN: str = "ffmpeg" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
""" | ||
Logger utils, mostly copied from Manim Community: | ||
https://github.com/ManimCommunity/manim/blob/d5b65b844b8ce8ff5151a2f56f9dc98cebbc1db4/manim/_config/logger_utils.py#L29-L101 | ||
""" | ||
|
||
import logging | ||
|
||
from rich.logging import RichHandler | ||
|
||
__all__ = ["logger", "make_logger"] | ||
|
||
HIGHLIGHTED_KEYWORDS = [ # these keywords are highlighted specially | ||
"Played", | ||
"animations", | ||
"scene", | ||
"Reading", | ||
"Writing", | ||
"script", | ||
"arguments", | ||
"Invalid", | ||
"Aborting", | ||
"module", | ||
"File", | ||
"Rendering", | ||
"Rendered", | ||
] | ||
|
||
|
||
def make_logger() -> logging.Logger: | ||
""" | ||
Make a logger similar to the one used by Manim. | ||
""" | ||
RichHandler.KEYWORDS = HIGHLIGHTED_KEYWORDS | ||
rich_handler = RichHandler( | ||
show_time=True, | ||
) | ||
logger = logging.getLogger("manim-slides") | ||
logger.addHandler(rich_handler) | ||
return logger | ||
|
||
|
||
logger = logging.getLogger("manim-slides") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters