[cad161]: / tests / pipelines / ner / test_value_extension.py

Download this file

52 lines (42 with data), 1.5 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import pytest
import spacy
from spacy.tokens import Span
from spacy.tokens.underscore import Underscore
import edsnlp
def test_warn_value_extension():
old_value_extension = Underscore.span_extensions.pop("value", None)
try:
Underscore._extensions = {}
Span.set_extension("value", getter=lambda span: "stuff")
existing_nlp = spacy.blank("fr")
with pytest.warns(UserWarning) as record:
existing_nlp.add_pipe(
"eds.terminology",
name="test",
config=dict(label="Any", terms={}),
)
assert any(
"A Span extension 'value' already exists with a different getter"
in str(r.message)
for r in record
)
finally:
Underscore.span_extensions.pop("value", None)
if old_value_extension is not None:
Underscore.span_extensions["value"] = old_value_extension
def test_value_extension():
# From https://github.com/aphp/edsnlp/issues/220
# Setting up a first pipeline
existing_nlp = spacy.blank("fr")
existing_nlp.add_pipe(
"eds.terminology",
name="test",
config=dict(label="Any", terms={}),
)
# Setting up another custom pipeline somewhere else in the code
nlp = edsnlp.blank("eds")
text = "hello this is a test"
doc = nlp(text)
my_span = doc[0:3]
my_span._.value = "CustomValue"
assert my_span._.value == "CustomValue"