Update and add test
@@ -451,13 +451,27 @@ def test_pipe_factories_from_source_config():
assert config["arg"] == "world"
-def test_pipe_factories_decorator_idempotent():
+class PipeFactoriesIdempotent:
+ def __init__(self, nlp, name):
+ ...
+
+ def __call__(self, doc):
+ ...
+
+
+@pytest.mark.parametrize(
+ "i,func,func2",
+ [
+ (0, lambda nlp, name: lambda doc: doc, lambda doc: doc),
+ (1, PipeFactoriesIdempotent, PipeFactoriesIdempotent(None, None)),
+ ],
+)
+def test_pipe_factories_decorator_idempotent(i, func, func2):
"""Check that decorator can be run multiple times if the function is the
same. This is especially relevant for live reloading because we don't
want spaCy to raise an error if a module registering components is reloaded.
"""
- name = "test_pipe_factories_decorator_idempotent"
- func = lambda nlp, name: lambda doc: doc
+ name = f"test_pipe_factories_decorator_idempotent_{i}"
for i in range(5):
Language.factory(name, func=func)
nlp = Language()
@@ -466,7 +480,6 @@ def test_pipe_factories_decorator_idempotent():
# Make sure it also works for component decorator, which creates the
# factory function
name2 = f"{name}2"
- func2 = lambda doc: doc
for i in range(5):
Language.component(name2, func=func2)
nlp = Language()
