Raise if disabled components are removed before DisabledPipes.restore

This commit is contained in:
Ines Montani 2020-08-28 20:35:26 +02:00
parent 1e0363290e
commit 10da74382f
3 changed files with 11 additions and 7 deletions

View File

@ -136,11 +136,10 @@ class Errors:
"after (component name or index), first (True) or last (True). "
"Invalid configuration: {args}. Existing components: {opts}")
E007 = ("'{name}' already exists in pipeline. Existing names: {opts}")
E008 = ("Some current components would be lost when restoring previous "
"pipeline state. If you added components after calling "
"`nlp.select_pipes()`, you should remove them explicitly with "
"`nlp.remove_pipe()` before the pipeline is restored. Names of "
"the new components: {names}")
E008 = ("Can't restore disabled pipeline component '{name}' because it "
"doesn't exist in the pipeline anymore. If you want to remove "
"components from the pipeline, you should do it before calling "
"`nlp.select_pipes()` or after restoring the disabled components.")
E010 = ("Word vectors set to length 0. This may be because you don't have "
"a model installed or loaded, or because your model doesn't "
"include word vectors. For more info, see the docs:\n"

View File

@ -1720,9 +1720,9 @@ class DisabledPipes(list):
def restore(self) -> None:
"""Restore the pipeline to its state when DisabledPipes was created."""
for name in self.names:
if name not in self.nlp._pipe_names:
raise ValueError(Errors.E008.format(name=name))
self.nlp.enable_pipe(name)
# TODO: maybe add some more checks / catch errors that may occur if
# user removes a disabled pipe in the with block
self[:] = []

View File

@ -181,6 +181,11 @@ def test_select_pipes_errors(nlp):
with pytest.raises(ValueError):
nlp.select_pipes(enable=[], disable=["c3"])
disabled = nlp.select_pipes(disable=["c2"])
nlp.remove_pipe("c2")
with pytest.raises(ValueError):
disabled.restore()
@pytest.mark.parametrize("n_pipes", [100])
def test_add_lots_of_pipes(nlp, n_pipes):