[cad161]: / tests / test_reducers.py

Download this file

65 lines (53 with data), 1.6 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
52
53
54
55
56
57
58
59
60
61
62
63
64
import copy
import pickle
import dill
import pytest
from spacy.tokens import Doc
import edsnlp
if not hasattr(Doc, "custom_test_reducers"):
Doc.set_extension("custom_test_reducers", default=None)
@pytest.mark.parametrize("pickler_module", ["pickle", "dill"])
def test_reducers(pickler_module):
pickler = pickle if pickler_module == "pickle" else dill
doc = edsnlp.blank("eds")("This is a test.")
doc.spans["test"] = [doc[0:1]]
span = doc.spans["test"][0]
token = doc[0]
data = [
doc, # data[0]
token, # data[1]
token, # data[2]
span, # data[3]
span, # data[4]
]
doc._.custom_test_reducers = data
doc_bytes = pickler.dumps(doc)
doc_bis = pickler.loads(doc_bytes)
data_bis = doc_bis._.custom_test_reducers
assert data_bis[0] is doc_bis
assert data_bis[1] == doc_bis[0]
assert data_bis[1] is data_bis[2]
assert data_bis[3] is data_bis[4]
doc_ter = pickler.loads(doc_bytes)
data_ter = doc_ter._.custom_test_reducers
assert data_ter[0] is not data_bis[0]
def test_deep_copy():
doc = edsnlp.blank("eds")("This is a test.")
doc.spans["test"] = [doc[0:1]]
span = doc.spans["test"][0]
token = doc[0]
data = [
doc, # data[0]
token, # data[1]
token, # data[2]
span, # data[3]
span, # data[4]
]
bis = copy.deepcopy(data)
ter = copy.deepcopy(data)
assert bis[1].doc is bis[0]
assert bis[3].doc is bis[0]
assert bis[1] is bis[2]
assert bis[3] is bis[4]
assert bis[0] is not doc
assert bis[0] is not ter[0]