From aaa49ac9b7aa15e696847fcf55305cd7564188d3 Mon Sep 17 00:00:00 2001 From: davrens101 Date: Fri, 6 Nov 2026 11:13:01 -0800 Subject: [PATCH] Remove disabled flag when removing a pipeline component Signed-off-by: davrens101 --- spacy/language.py | 3 +-- spacy/tests/pipeline/test_pipe_methods.py | 11 +++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/spacy/language.py b/spacy/language.py index 57347fee84b..bd50a190a63 100644 --- a/spacy/language.py +++ b/spacy/language.py @@ -990,8 +990,7 @@ def remove_pipe(self, name: str) -> Tuple[str, PipeCallable]: if name in self._config["initialize"]["components"]: self._config["initialize"]["components"].pop(name) # Make sure the name is also removed from the set of disabled components - if name in self.disabled: - self._disabled.remove(name) + self._disabled.discard(name) self._link_components() return removed diff --git a/spacy/tests/pipeline/test_pipe_methods.py b/spacy/tests/pipeline/test_pipe_methods.py index 9b9786f0458..8a473be3a3e 100644 --- a/spacy/tests/pipeline/test_pipe_methods.py +++ b/spacy/tests/pipeline/test_pipe_methods.py @@ -252,6 +252,17 @@ def test_remove_pipe(nlp, name): assert removed_component == new_pipe +@pytest.mark.issue(14069) +def test_remove_disabled_pipe_then_readd(nlp): + nlp.add_pipe("sentencizer") + nlp.disable_pipe("sentencizer") + nlp.remove_pipe("sentencizer") + assert "sentencizer" not in nlp.disabled + nlp.add_pipe("sentencizer") + assert nlp.disabled == [] + assert nlp.pipe_names == ["sentencizer"] + + @pytest.mark.parametrize("name", ["my_component"]) def test_disable_pipes_method(nlp, name): nlp.add_pipe("new_pipe", name=name)