From ec71a6b5728d5e10d9271978f6ade87bf9f04332 Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Mon, 21 Jun 2021 09:34:29 +0200 Subject: [PATCH] Filter W036 for entity ruler, etc. (#8424) --- spacy/pipeline/entityruler.py | 12 +++++------- spacy/tests/matcher/test_matcher_api.py | 1 + spacy/tests/matcher/test_matcher_logic.py | 1 + spacy/tests/pipeline/test_entity_linker.py | 2 ++ spacy/tests/pipeline/test_entity_ruler.py | 3 ++- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/spacy/pipeline/entityruler.py b/spacy/pipeline/entityruler.py index 9f62f9875..761ff12bf 100644 --- a/spacy/pipeline/entityruler.py +++ b/spacy/pipeline/entityruler.py @@ -3,6 +3,7 @@ from typing import Optional, Union, List, Dict, Tuple, Iterable, Any, Callable, from collections import defaultdict from pathlib import Path import srsly +import warnings from .pipe import Pipe from ..training import Example @@ -141,7 +142,9 @@ class EntityRuler(Pipe): def match(self, doc: Doc): self._require_patterns() - matches = list(self.matcher(doc)) + list(self.phrase_matcher(doc)) + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", message="\\[W036") + matches = list(self.matcher(doc)) + list(self.phrase_matcher(doc)) matches = set( [(m_id, start, end) for m_id, start, end in matches if start != end] ) @@ -276,7 +279,7 @@ class EntityRuler(Pipe): current_index = i break subsequent_pipes = [ - pipe for pipe in self.nlp.pipe_names[current_index + 1 :] + pipe for pipe in self.nlp.pipe_names[current_index :] ] except ValueError: subsequent_pipes = [] @@ -334,11 +337,6 @@ class EntityRuler(Pipe): if len(self) == 0: warnings.warn(Warnings.W036.format(name=self.name)) - def _require_patterns(self) -> None: - """Raise a warning if this component has no patterns defined.""" - if len(self) == 0: - warnings.warn(Warnings.W036.format(name=self.name)) - def _split_label(self, label: str) -> Tuple[str, str]: """Split Entity label into ent_label and ent_id if it contains self.ent_id_sep diff --git a/spacy/tests/matcher/test_matcher_api.py b/spacy/tests/matcher/test_matcher_api.py index d3772a931..e0f655bbe 100644 --- a/spacy/tests/matcher/test_matcher_api.py +++ b/spacy/tests/matcher/test_matcher_api.py @@ -481,6 +481,7 @@ def test_matcher_schema_token_attributes(en_vocab, pattern, text): assert len(matches) == 1 +@pytest.mark.filterwarnings("ignore:\\[W036") def test_matcher_valid_callback(en_vocab): """Test that on_match can only be None or callable.""" matcher = Matcher(en_vocab) diff --git a/spacy/tests/matcher/test_matcher_logic.py b/spacy/tests/matcher/test_matcher_logic.py index 9f575fe05..36708edd0 100644 --- a/spacy/tests/matcher/test_matcher_logic.py +++ b/spacy/tests/matcher/test_matcher_logic.py @@ -180,6 +180,7 @@ def test_matcher_sets_return_correct_tokens(en_vocab): assert texts == ["zero", "one", "two"] +@pytest.mark.filterwarnings("ignore:\\[W036") def test_matcher_remove(): nlp = English() matcher = Matcher(nlp.vocab) diff --git a/spacy/tests/pipeline/test_entity_linker.py b/spacy/tests/pipeline/test_entity_linker.py index a7f9364e9..13c8cb72e 100644 --- a/spacy/tests/pipeline/test_entity_linker.py +++ b/spacy/tests/pipeline/test_entity_linker.py @@ -324,6 +324,7 @@ def test_append_alias(nlp): assert len(mykb.get_alias_candidates("douglas")) == 3 +@pytest.mark.filterwarnings("ignore:\\[W036") def test_append_invalid_alias(nlp): """Test that append an alias will throw an error if prior probs are exceeding 1""" mykb = KnowledgeBase(nlp.vocab, entity_vector_length=1) @@ -342,6 +343,7 @@ def test_append_invalid_alias(nlp): mykb.append_alias(alias="douglas", entity="Q1", prior_prob=0.2) +@pytest.mark.filterwarnings("ignore:\\[W036") def test_preserving_links_asdoc(nlp): """Test that Span.as_doc preserves the existing entity links""" vector_length = 1 diff --git a/spacy/tests/pipeline/test_entity_ruler.py b/spacy/tests/pipeline/test_entity_ruler.py index 4a01ce183..dc0ca0301 100644 --- a/spacy/tests/pipeline/test_entity_ruler.py +++ b/spacy/tests/pipeline/test_entity_ruler.py @@ -98,7 +98,8 @@ def test_entity_ruler_clear(nlp, patterns): assert len(doc.ents) == 1 ruler.clear() assert len(ruler.labels) == 0 - doc = nlp("hello world") + with pytest.warns(UserWarning): + doc = nlp("hello world") assert len(doc.ents) == 0