Hrabal/TemPy

View on GitHub
tempy/__init__.py

Summary

Maintainability
A
0 mins
Test Coverage
# -*- coding: utf-8 -*-
# @author: Federico Cerchiari <federicocerchiari@gmail.com>
import sys
from types import ModuleType

__version__ = "1.5.3"
VERSION = tuple(map(int, __version__.split(".")))

if sys.version_info < (3, 3):
    raise RuntimeError("TemPy requires Python >= 3.3.")


_shortcuts = {
    "render_template": "tools",
    "Tag": "elements",
    "VoidTag": "elements",
    "Css": "css",
    "Content": "content",
    "TempyREPR": "tempyrepr",
    "TempyPlace": "tempyrepr",
    "T": "t",
    "Escaped": "tempy",
}


class Module(ModuleType):
    def __getattr__(self, name):
        if name in _shortcuts:
            submodule = __import__(
                "tempy." + _shortcuts[name], globals(), locals(), [name]
            )
            return getattr(submodule, name)
        r = ModuleType.__getattribute__(self, name)
        return r

    def __dir__(self):
        result = list(sys.modules["tempy"].__all__)
        result.extend(
            (
                "__file__",
                "__doc__",
                "__all__",
                "__docformat__",
                "__name__",
                "__path__",
                "__package__",
                "__version__",
            )
        )
        return result


old_module, sys.modules["tempy"] = sys.modules["tempy"], Module("tempy")
sys.modules["tempy"].__dict__.update(
    {
        "__file__": __file__,
        "__package__": "tempy",
        "__path__": __path__,
        "__doc__": __doc__,
        "__version__": __version__,
        "__all__": tuple(_shortcuts),
        "__docformat__": "restructuredtext en",
    }
)