Lazily load cli with module __getattr__

This commit is contained in:
Hood Chatham 2024-12-20 13:46:28 +01:00
parent 311f7cc9fb
commit 2442f7209d

View File

@ -5,24 +5,41 @@ from typing import Any, Dict, Iterable, Union
# set library-specific custom warning handling before doing anything else # set library-specific custom warning handling before doing anything else
from .errors import setup_default_warnings from .errors import setup_default_warnings
setup_default_warnings() # noqa: E402 setup_default_warnings()
# These are imported as part of the API # These are imported as part of the API
from thinc.api import Config, prefer_gpu, require_cpu, require_gpu # noqa: F401 from thinc.api import Config, prefer_gpu, require_cpu, require_gpu
from . import pipeline # noqa: F401 from . import pipeline, util
from . import util from .about import __version__
from .about import __version__ # noqa: F401
from .cli.info import info # noqa: F401
from .errors import Errors from .errors import Errors
from .glossary import explain # noqa: F401 from .glossary import explain
from .language import Language from .language import Language
from .util import logger, registry # noqa: F401 from .util import logger, registry
from .vocab import Vocab from .vocab import Vocab
if sys.maxunicode == 65535: if sys.maxunicode == 65535:
raise SystemError(Errors.E130) raise SystemError(Errors.E130)
__all__ = [
"__version__",
"blank",
"Config",
"Errors",
"explain",
"info",
"Language",
"load",
"logger",
"pipeline",
"prefer_gpu",
"registry",
"require_cpu",
"require_gpu",
"util",
"Vocab",
]
def load( def load(
name: Union[str, Path], name: Union[str, Path],
@ -77,3 +94,12 @@ def blank(
# We should accept both dot notation and nested dict here for consistency # We should accept both dot notation and nested dict here for consistency
config = util.dot_to_dict(config) config = util.dot_to_dict(config)
return LangClass.from_config(config, vocab=vocab, meta=meta) return LangClass.from_config(config, vocab=vocab, meta=meta)
def __getattr__(name):
if name == "info":
from .cli.info import info
return info
if name == "cli":
from . import cli
return cli
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")