diff --git a/spacy/language.py b/spacy/language.py index b982583f0..ec0c5d68f 100644 --- a/spacy/language.py +++ b/spacy/language.py @@ -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 diff --git a/spacy/tests/regression/test_issue1654.py b/spacy/tests/regression/test_issue1654.py index 448bf80a1..531c00757 100644 --- a/spacy/tests/regression/test_issue1654.py +++ b/spacy/tests/regression/test_issue1654.py @@ -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']