This commit is contained in:
Matthew Honnibal 2018-02-01 02:57:52 +01:00
commit 6b1126c312
4 changed files with 20 additions and 3 deletions

View File

@ -20,13 +20,16 @@ def validate():
prints("Couldn't fetch compatibility table.",
title="Server error (%d)" % r.status_code, exits=1)
compat = r.json()['spacy']
current_compat = compat.get(about.__version__)
if not current_compat:
prints(about.__compatibility__, exits=1,
title="Can't find spaCy v{} in compatibility table"
.format(about.__version__))
all_models = set()
for spacy_v, models in dict(compat).items():
all_models.update(models.keys())
for model, model_vs in models.items():
compat[spacy_v][model] = [reformat_version(v) for v in model_vs]
current_compat = compat[about.__version__]
model_links = get_model_links(current_compat)
model_pkgs = get_model_pkgs(current_compat, all_models)
incompat_links = {l for l, d in model_links.items() if not d['compat']}

View File

@ -236,6 +236,14 @@ class Language(object):
>>> nlp.add_pipe(component, before='ner')
>>> nlp.add_pipe(component, name='custom_name', last=True)
"""
if not hasattr(component, '__call__'):
msg = ("Not a valid pipeline component. Expected callable, but "
"got {}. ".format(repr(component)))
if isinstance(component, basestring_) and component in self.factories:
msg += ("If you meant to add a built-in component, use "
"create_pipe: nlp.add_pipe(nlp.create_pipe('{}'))"
.format(component))
raise ValueError(msg)
if name is None:
if hasattr(component, 'name'):
name = component.name

View File

@ -107,3 +107,9 @@ def test_add_lots_of_pipes(nlp, n_pipes):
for i in range(n_pipes):
nlp.add_pipe(lambda doc: doc, name='pipe_%d' % i)
assert len(nlp.pipe_names) == n_pipes
@pytest.mark.parametrize('component', ['ner', {'hello': 'world'}])
def test_raise_for_invalid_components(nlp, component):
with pytest.raises(ValueError):
nlp.add_pipe(component)

View File

@ -238,7 +238,7 @@ p
python -m pytest <spacy-directory> --models --en # basic and English model tests
+infobox("Note on model tests", "⚠️")
| The test suite specifies a #[+a(gh("spacy", "tests/conftest.py")) list of models]
| The test suite specifies a #[+a(gh("spacy", "spacy/tests/conftest.py")) list of models]
| to run the tests on. If a model is not installed, the tests will be
| skipped. If all models are installed, the respective tests will run once
| for each model. The easiest way to find out which models and model