Diff of /tests/test_reducers.py [000000] .. [cad161]

Switch to unified view

a b/tests/test_reducers.py
1
import copy
2
import pickle
3
4
import dill
5
import pytest
6
from spacy.tokens import Doc
7
8
import edsnlp
9
10
if not hasattr(Doc, "custom_test_reducers"):
11
    Doc.set_extension("custom_test_reducers", default=None)
12
13
14
@pytest.mark.parametrize("pickler_module", ["pickle", "dill"])
15
def test_reducers(pickler_module):
16
    pickler = pickle if pickler_module == "pickle" else dill
17
    doc = edsnlp.blank("eds")("This is a test.")
18
    doc.spans["test"] = [doc[0:1]]
19
    span = doc.spans["test"][0]
20
    token = doc[0]
21
    data = [
22
        doc,  # data[0]
23
        token,  # data[1]
24
        token,  # data[2]
25
        span,  # data[3]
26
        span,  # data[4]
27
    ]
28
    doc._.custom_test_reducers = data
29
    doc_bytes = pickler.dumps(doc)
30
31
    doc_bis = pickler.loads(doc_bytes)
32
    data_bis = doc_bis._.custom_test_reducers
33
    assert data_bis[0] is doc_bis
34
    assert data_bis[1] == doc_bis[0]
35
    assert data_bis[1] is data_bis[2]
36
    assert data_bis[3] is data_bis[4]
37
38
    doc_ter = pickler.loads(doc_bytes)
39
    data_ter = doc_ter._.custom_test_reducers
40
    assert data_ter[0] is not data_bis[0]
41
42
43
def test_deep_copy():
44
    doc = edsnlp.blank("eds")("This is a test.")
45
    doc.spans["test"] = [doc[0:1]]
46
    span = doc.spans["test"][0]
47
    token = doc[0]
48
    data = [
49
        doc,  # data[0]
50
        token,  # data[1]
51
        token,  # data[2]
52
        span,  # data[3]
53
        span,  # data[4]
54
    ]
55
56
    bis = copy.deepcopy(data)
57
    ter = copy.deepcopy(data)
58
    assert bis[1].doc is bis[0]
59
    assert bis[3].doc is bis[0]
60
    assert bis[1] is bis[2]
61
    assert bis[3] is bis[4]
62
63
    assert bis[0] is not doc
64
    assert bis[0] is not ter[0]