Fix off-by-one error in nlp.add_pipe(after=name) (fixes #1654)

This commit is contained in:
ines 2017-11-28 20:37:55 +01:00
parent 343fd2969d
commit a31506e060
2 changed files with 8 additions and 2 deletions

View File

@ -260,7 +260,7 @@ class Language(object):
elif before and before in self.pipe_names:
self.pipeline.insert(self.pipe_names.index(before), pipe)
elif after and after in self.pipe_names:
self.pipeline.insert(self.pipe_names.index(after), pipe)
self.pipeline.insert(self.pipe_names.index(after) + 1, pipe)
else:
msg = "Can't find '{}' in pipeline. Available names: {}"
unfound = before or after

View File

@ -7,7 +7,6 @@ from ...language import Language
from ...vocab import Vocab
@pytest.mark.xfail
def test_issue1654():
nlp = Language(Vocab())
assert not nlp.pipeline
@ -15,3 +14,10 @@ def test_issue1654():
nlp.add_pipe(lambda doc: doc, name='2', after='1')
nlp.add_pipe(lambda doc: doc, name='3', after='2')
assert nlp.pipe_names == ['1', '2', '3']
nlp2 = Language(Vocab())
assert not nlp2.pipeline
nlp2.add_pipe(lambda doc: doc, name='3')
nlp2.add_pipe(lambda doc: doc, name='2', before='3')
nlp2.add_pipe(lambda doc: doc, name='1', before='2')
assert nlp2.pipe_names == ['1', '2', '3']