Load the cli module lazily for spacy.info (#12962)

* Load the cli module lazily for spacy.info

This avoids that the `spacy` module cannot be imported when the
users chooses not to install `typer`/`requests`.

* Add test

---------

Co-authored-by: Adriane Boyd <adrianeboyd@gmail.com>
This commit is contained in:
Daniël de Kok 2023-09-28 11:36:44 +02:00 committed by GitHub
parent 6255e38695
commit beda27a91e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 1 deletions

View File

@ -13,7 +13,6 @@ from thinc.api import Config, prefer_gpu, require_cpu, require_gpu # noqa: F401
from . import pipeline # noqa: F401 from . import pipeline # noqa: F401
from . import util from . import util
from .about import __version__ # noqa: F401 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 # noqa: F401
from .language import Language from .language import Language
@ -77,3 +76,9 @@ 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 info(*args, **kwargs):
from .cli.info import info as cli_info
return cli_info(*args, **kwargs)

View File

@ -14,6 +14,7 @@ from thinc.api import Config, ConfigValidationError
import spacy import spacy
from spacy import about from spacy import about
from spacy import info as spacy_info
from spacy.cli import info from spacy.cli import info
from spacy.cli._util import ( from spacy.cli._util import (
download_file, download_file,
@ -225,6 +226,9 @@ def test_cli_info():
raw_data = info(tmp_dir, exclude=[""]) raw_data = info(tmp_dir, exclude=[""])
assert raw_data["lang"] == "nl" assert raw_data["lang"] == "nl"
assert raw_data["components"] == ["textcat"] assert raw_data["components"] == ["textcat"]
raw_data = spacy_info(tmp_dir, exclude=[""])
assert raw_data["lang"] == "nl"
assert raw_data["components"] == ["textcat"]
def test_cli_converters_conllu_to_docs(): def test_cli_converters_conllu_to_docs():